亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vdbe.c

?? 這是一個嵌入式系統上運行的輕量級數據庫
?? C
?? 第 1 頁 / 共 5 頁
字號:
** invoke the callback function using the newly formed array as the** 3rd parameter.*/case OP_Callback: {  int i;  char **azArgv = p->zArgv;  Mem *pCol;  pCol = &pTos[1-pOp->p1];  assert( pCol>=p->aStack );  for(i=0; i<pOp->p1; i++, pCol++){    if( pCol->flags & MEM_Null ){      azArgv[i] = 0;    }else{      Stringify(pCol);      azArgv[i] = pCol->z;    }  }  azArgv[i] = 0;  p->nCallback++;  p->azResColumn = azArgv;  assert( p->nResColumn==pOp->p1 );  p->popStack = pOp->p1;  p->pc = pc + 1;  p->pTos = pTos;  return SQLITE_ROW;}/* Opcode: Concat P1 P2 P3**** Look at the first P1 elements of the stack.  Append them all ** together with the lowest element first.  Use P3 as a separator.  ** Put the result on the top of the stack.  The original P1 elements** are popped from the stack if P2==0 and retained if P2==1.  If** any element of the stack is NULL, then the result is NULL.**** If P3 is NULL, then use no separator.  When P1==1, this routine** makes a copy of the top stack element into memory obtained** from sqliteMalloc().*/case OP_Concat: {  char *zNew;  int nByte;  int nField;  int i, j;  char *zSep;  int nSep;  Mem *pTerm;  nField = pOp->p1;  zSep = pOp->p3;  if( zSep==0 ) zSep = "";  nSep = strlen(zSep);  assert( &pTos[1-nField] >= p->aStack );  nByte = 1 - nSep;  pTerm = &pTos[1-nField];  for(i=0; i<nField; i++, pTerm++){    if( pTerm->flags & MEM_Null ){      nByte = -1;      break;    }else{      Stringify(pTerm);      nByte += pTerm->n - 1 + nSep;    }  }  if( nByte<0 ){    if( pOp->p2==0 ){      popStack(&pTos, nField);    }    pTos++;    pTos->flags = MEM_Null;    break;  }  zNew = sqliteMallocRaw( nByte );  if( zNew==0 ) goto no_mem;  j = 0;  pTerm = &pTos[1-nField];  for(i=j=0; i<nField; i++, pTerm++){    assert( pTerm->flags & MEM_Str );    memcpy(&zNew[j], pTerm->z, pTerm->n-1);    j += pTerm->n-1;    if( nSep>0 && i<nField-1 ){      memcpy(&zNew[j], zSep, nSep);      j += nSep;    }  }  zNew[j] = 0;  if( pOp->p2==0 ){    popStack(&pTos, nField);  }  pTos++;  pTos->n = nByte;  pTos->flags = MEM_Str|MEM_Dyn;  pTos->z = zNew;  break;}/* Opcode: Add * * ***** Pop the top two elements from the stack, add them together,** and push the result back onto the stack.  If either element** is a string then it is converted to a double using the atof()** function before the addition.** If either operand is NULL, the result is NULL.*//* Opcode: Multiply * * ***** Pop the top two elements from the stack, multiply them together,** and push the result back onto the stack.  If either element** is a string then it is converted to a double using the atof()** function before the multiplication.** If either operand is NULL, the result is NULL.*//* Opcode: Subtract * * ***** Pop the top two elements from the stack, subtract the** first (what was on top of the stack) from the second (the** next on stack)** and push the result back onto the stack.  If either element** is a string then it is converted to a double using the atof()** function before the subtraction.** If either operand is NULL, the result is NULL.*//* Opcode: Divide * * ***** Pop the top two elements from the stack, divide the** first (what was on top of the stack) from the second (the** next on stack)** and push the result back onto the stack.  If either element** is a string then it is converted to a double using the atof()** function before the division.  Division by zero returns NULL.** If either operand is NULL, the result is NULL.*//* Opcode: Remainder * * ***** Pop the top two elements from the stack, divide the** first (what was on top of the stack) from the second (the** next on stack)** and push the remainder after division onto the stack.  If either element** is a string then it is converted to a double using the atof()** function before the division.  Division by zero returns NULL.** If either operand is NULL, the result is NULL.*/case OP_Add:case OP_Subtract:case OP_Multiply:case OP_Divide:case OP_Remainder: {  Mem *pNos = &pTos[-1];  assert( pNos>=p->aStack );  if( ((pTos->flags | pNos->flags) & MEM_Null)!=0 ){    Release(pTos);    pTos--;    Release(pTos);    pTos->flags = MEM_Null;  }else if( (pTos->flags & pNos->flags & MEM_Int)==MEM_Int ){    int a, b;    a = pTos->i;    b = pNos->i;    switch( pOp->opcode ){      case OP_Add:         b += a;       break;      case OP_Subtract:    b -= a;       break;      case OP_Multiply:    b *= a;       break;      case OP_Divide: {        if( a==0 ) goto divide_by_zero;        b /= a;        break;      }      default: {        if( a==0 ) goto divide_by_zero;        b %= a;        break;      }    }    Release(pTos);    pTos--;    Release(pTos);    pTos->i = b;    pTos->flags = MEM_Int;  }else{    double a, b;    Realify(pTos);    Realify(pNos);    a = pTos->r;    b = pNos->r;    switch( pOp->opcode ){      case OP_Add:         b += a;       break;      case OP_Subtract:    b -= a;       break;      case OP_Multiply:    b *= a;       break;      case OP_Divide: {        if( a==0.0 ) goto divide_by_zero;        b /= a;        break;      }      default: {        int ia = (int)a;        int ib = (int)b;        if( ia==0.0 ) goto divide_by_zero;        b = ib % ia;        break;      }    }    Release(pTos);    pTos--;    Release(pTos);    pTos->r = b;    pTos->flags = MEM_Real;  }  break;divide_by_zero:  Release(pTos);  pTos--;  Release(pTos);  pTos->flags = MEM_Null;  break;}/* Opcode: Function P1 * P3**** Invoke a user function (P3 is a pointer to a Function structure that** defines the function) with P1 string arguments taken from the stack.** Pop all arguments from the stack and push back the result.**** See also: AggFunc*/case OP_Function: {  int n, i;  Mem *pArg;  char **azArgv;  sqlite_func ctx;  n = pOp->p1;  pArg = &pTos[1-n];  azArgv = p->zArgv;  for(i=0; i<n; i++, pArg++){    if( pArg->flags & MEM_Null ){      azArgv[i] = 0;    }else{      Stringify(pArg);      azArgv[i] = pArg->z;    }  }  ctx.pFunc = (FuncDef*)pOp->p3;  ctx.s.flags = MEM_Null;  ctx.s.z = 0;  ctx.isError = 0;  ctx.isStep = 0;  if( sqliteSafetyOff(db) ) goto abort_due_to_misuse;  (*ctx.pFunc->xFunc)(&ctx, n, (const char**)azArgv);  if( sqliteSafetyOn(db) ) goto abort_due_to_misuse;  popStack(&pTos, n);  pTos++;  *pTos = ctx.s;  if( pTos->flags & MEM_Short ){    pTos->z = pTos->zShort;  }  if( ctx.isError ){    sqliteSetString(&p->zErrMsg,        (pTos->flags & MEM_Str)!=0 ? pTos->z : "user function error", (char*)0);    rc = SQLITE_ERROR;  }  break;}/* Opcode: BitAnd * * ***** Pop the top two elements from the stack.  Convert both elements** to integers.  Push back onto the stack the bit-wise AND of the** two elements.** If either operand is NULL, the result is NULL.*//* Opcode: BitOr * * ***** Pop the top two elements from the stack.  Convert both elements** to integers.  Push back onto the stack the bit-wise OR of the** two elements.** If either operand is NULL, the result is NULL.*//* Opcode: ShiftLeft * * ***** Pop the top two elements from the stack.  Convert both elements** to integers.  Push back onto the stack the top element shifted** left by N bits where N is the second element on the stack.** If either operand is NULL, the result is NULL.*//* Opcode: ShiftRight * * ***** Pop the top two elements from the stack.  Convert both elements** to integers.  Push back onto the stack the top element shifted** right by N bits where N is the second element on the stack.** If either operand is NULL, the result is NULL.*/case OP_BitAnd:case OP_BitOr:case OP_ShiftLeft:case OP_ShiftRight: {  Mem *pNos = &pTos[-1];  int a, b;  assert( pNos>=p->aStack );  if( (pTos->flags | pNos->flags) & MEM_Null ){    popStack(&pTos, 2);    pTos++;    pTos->flags = MEM_Null;    break;  }  Integerify(pTos);  Integerify(pNos);  a = pTos->i;  b = pNos->i;  switch( pOp->opcode ){    case OP_BitAnd:      a &= b;     break;    case OP_BitOr:       a |= b;     break;    case OP_ShiftLeft:   a <<= b;    break;    case OP_ShiftRight:  a >>= b;    break;    default:   /* CANT HAPPEN */     break;  }  assert( (pTos->flags & MEM_Dyn)==0 );  assert( (pNos->flags & MEM_Dyn)==0 );  pTos--;  Release(pTos);  pTos->i = a;  pTos->flags = MEM_Int;  break;}/* Opcode: AddImm  P1 * *** ** Add the value P1 to whatever is on top of the stack.  The result** is always an integer.**** To force the top of the stack to be an integer, just add 0.*/case OP_AddImm: {  assert( pTos>=p->aStack );  Integerify(pTos);  pTos->i += pOp->p1;  break;}/* Opcode: ForceInt P1 P2 ***** Convert the top of the stack into an integer.  If the current top of** the stack is not numeric (meaning that is is a NULL or a string that** does not look like an integer or floating point number) then pop the** stack and jump to P2.  If the top of the stack is numeric then** convert it into the least integer that is greater than or equal to its** current value if P1==0, or to the least integer that is strictly** greater than its current value if P1==1.*/case OP_ForceInt: {  int v;  assert( pTos>=p->aStack );  if( (pTos->flags & (MEM_Int|MEM_Real))==0         && ((pTos->flags & MEM_Str)==0 || sqliteIsNumber(pTos->z)==0) ){    Release(pTos);    pTos--;    pc = pOp->p2 - 1;    break;  }  if( pTos->flags & MEM_Int ){    v = pTos->i + (pOp->p1!=0);  }else{    Realify(pTos);    v = (int)pTos->r;    if( pTos->r>(double)v ) v++;    if( pOp->p1 && pTos->r==(double)v ) v++;  }  Release(pTos);  pTos->i = v;  pTos->flags = MEM_Int;  break;}/* Opcode: MustBeInt P1 P2 *** ** Force the top of the stack to be an integer.  If the top of the** stack is not an integer and cannot be converted into an integer** with out data loss, then jump immediately to P2, or if P2==0** raise an SQLITE_MISMATCH exception.**** If the top of the stack is not an integer and P2 is not zero and** P1 is 1, then the stack is popped.  In all other cases, the depth** of the stack is unchanged.*/case OP_MustBeInt: {  assert( pTos>=p->aStack );  if( pTos->flags & MEM_Int ){    /* Do nothing */  }else if( pTos->flags & MEM_Real ){    int i = (int)pTos->r;    double r = (double)i;    if( r!=pTos->r ){      goto mismatch;    }    pTos->i = i;  }else if( pTos->flags & MEM_Str ){    int v;    if( !toInt(pTos->z, &v) ){      double r;      if( !sqliteIsNumber(pTos->z) ){        goto mismatch;      }      Realify(pTos);      v = (int)pTos->r;      r = (double)v;      if( r!=pTos->r ){        goto mismatch;      }    }    pTos->i = v;  }else{    goto mismatch;  }  Release(pTos);  pTos->flags = MEM_Int;  break;mismatch:  if( pOp->p2==0 ){    rc = SQLITE_MISMATCH;    goto abort_due_to_error;  }else{    if( pOp->p1 ) popStack(&pTos, 1);    pc = pOp->p2 - 1;  }  break;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美| 午夜在线成人av| 一级中文字幕一区二区| 免费不卡在线观看| 欧亚一区二区三区| 国产视频一区二区在线| 一区二区三区欧美视频| 久久精品夜夜夜夜久久| 717成人午夜免费福利电影| 日韩三级精品电影久久久| 国产精品福利一区二区三区| 日本不卡视频在线观看| 欧美中文字幕一区二区三区亚洲| 久久久99精品久久| 久久国产生活片100| 欧美高清精品3d| 亚洲自拍偷拍九九九| 91丨porny丨最新| 中文字幕免费不卡在线| 国产精品一区免费在线观看| 欧美日韩国产一二三| 亚洲综合激情网| 在线免费观看视频一区| 亚洲男同性恋视频| 99久久99精品久久久久久| 欧美激情综合在线| 国产很黄免费观看久久| 精品久久一区二区| 一区二区三区欧美视频| youjizz国产精品| 另类综合日韩欧美亚洲| 欧美午夜寂寞影院| 一区二区三区视频在线看| 99热精品一区二区| 日韩美女视频一区二区| av电影天堂一区二区在线| 亚洲欧洲在线观看av| av资源网一区| ...xxx性欧美| 97久久精品人人做人人爽50路| 中文字幕亚洲区| 色综合久久综合| 亚洲午夜精品网| 3751色影院一区二区三区| 日本一道高清亚洲日美韩| 91精品国产综合久久精品性色 | 欧美色倩网站大全免费| 国产精品久久久一区麻豆最新章节| 国产日韩欧美精品在线| 一区二区三区免费在线观看| 日韩亚洲电影在线| 欧美日韩免费在线视频| 亚洲国产欧美在线| 日韩三级免费观看| 盗摄精品av一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 色婷婷av一区二区三区gif | 在线精品亚洲一区二区不卡| 亚洲亚洲精品在线观看| 欧美刺激脚交jootjob| 国产 欧美在线| 亚洲国产日韩在线一区模特| 日韩欧美成人激情| 成人丝袜视频网| 亚洲成人高清在线| 一区二区三区在线观看网站| 欧美日韩性生活| 精品国产免费一区二区三区四区 | 精品国产第一区二区三区观看体验 | 5566中文字幕一区二区电影| 日日夜夜免费精品视频| 久久亚洲精精品中文字幕早川悠里| 成人免费视频一区| 首页亚洲欧美制服丝腿| 中文字幕巨乱亚洲| 日韩一级片网站| 91丨porny丨首页| 麻豆一区二区99久久久久| 中文字幕一区在线观看视频| 欧美一区二区三区男人的天堂| 成人免费毛片aaaaa**| 青青草伊人久久| 亚洲欧美视频在线观看| 久久久久久97三级| 欧美一区二区啪啪| 亚洲欧洲中文日韩久久av乱码| 亚洲精品国产一区二区精华液 | 国产激情精品久久久第一区二区| 一区二区三区免费在线观看| 国产亚洲精品bt天堂精选| 欧美伦理视频网站| 91视频国产资源| 成人手机电影网| 丁香婷婷综合五月| 国产在线麻豆精品观看| 日本视频在线一区| 亚洲一区二区三区爽爽爽爽爽 | 国产精品国产三级国产aⅴ原创 | 2021国产精品久久精品| 欧美日韩亚洲国产综合| 91麻豆免费看| 99久久99久久久精品齐齐| 国产在线一区二区| 日韩毛片精品高清免费| 精品国产乱码久久久久久图片| 欧美色成人综合| 日本韩国欧美一区二区三区| 从欧美一区二区三区| 国产一区二区日韩精品| 韩国欧美国产一区| 日本麻豆一区二区三区视频| 亚洲成人午夜影院| 亚洲成av人片一区二区三区| 一区二区三区欧美视频| 一级中文字幕一区二区| 一区二区三区四区不卡视频 | 日韩欧美资源站| 欧美一区二区三区人| 91麻豆精品国产91久久久久久| 欧美精品在线观看一区二区| 欧美日韩免费一区二区三区| 欧美午夜精品一区二区蜜桃 | 色94色欧美sute亚洲线路一ni| 精品影院一区二区久久久| 蜜桃91丨九色丨蝌蚪91桃色| 免费成人深夜小野草| 日本人妖一区二区| 国内久久精品视频| 高清不卡在线观看av| eeuss国产一区二区三区| 97精品视频在线观看自产线路二| 91视频国产资源| 欧美精品色一区二区三区| 日韩一区二区三区精品视频| 2020日本不卡一区二区视频| 国产欧美精品日韩区二区麻豆天美| 国产欧美一区二区三区在线老狼| 国产精品高清亚洲| 亚洲大片精品永久免费| 日本欧美加勒比视频| 国产成人综合视频| 色999日韩国产欧美一区二区| 欧美日韩亚洲国产综合| 久久一日本道色综合| 国产精品传媒入口麻豆| 无吗不卡中文字幕| 国产一区二区美女诱惑| 色偷偷久久人人79超碰人人澡| 欧美日韩在线三级| 久久久精品国产免大香伊| 一区二区三区高清不卡| 中文字幕精品三区| 一区二区三区在线不卡| 六月丁香综合在线视频| 欧美日韩一级视频| 国产不卡高清在线观看视频| 色久综合一二码| 日韩欧美在线1卡| 亚洲男人的天堂av| 久久69国产一区二区蜜臀| 色综合天天综合在线视频| 日韩欧美亚洲国产精品字幕久久久| 国产三级欧美三级| 丝袜亚洲另类丝袜在线| av一二三不卡影片| 日韩欧美国产系列| 一区二区三区免费在线观看| 国产成人在线观看免费网站| 欧美日韩国产在线播放网站| 国产精品久久久久久久久免费丝袜 | 国产成人三级在线观看| 欧美日韩免费高清一区色橹橹| 中文字幕av一区二区三区免费看| 国产精品久久久久婷婷二区次| 欧美色男人天堂| 欧美激情一区二区三区四区| 欧美a级理论片| 在线观看亚洲成人| 国产精品美女一区二区三区| 麻豆国产欧美一区二区三区| 欧美在线一二三四区| 国产精品私人影院| 国产精品影视在线观看| 日韩欧美专区在线| 日韩精品每日更新| 欧美日本不卡视频| 亚洲国产综合视频在线观看| 91玉足脚交白嫩脚丫在线播放| 国产欧美一区二区在线| 国产曰批免费观看久久久| 日韩午夜在线影院| 日韩主播视频在线| 欧美日韩成人高清| 亚洲成人在线观看视频| 欧美午夜宅男影院| 亚洲一区在线观看免费| 91精品福利在线| 一区二区三区资源| 欧美综合亚洲图片综合区| 亚洲激情第一区|