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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vdbe.c

?? 新版輕量級嵌入式數(shù)據(jù)庫
?? C
?? 第 1 頁 / 共 5 頁
字號:
  }  break;}/* Opcode: Pull P1 * ***** The P1-th element is removed from its current location on ** the stack and pushed back on top of the stack.  The** top of the stack is element 0, so "Pull 0 0 0" is** a no-op.  "Pull 1 0 0" swaps the top two elements of** the stack.**** See also the Dup instruction.*/case OP_Pull: {            /* no-push */  Mem *pFrom = &pTos[-pOp->p1];  int i;  Mem ts;  ts = *pFrom;  Deephemeralize(pTos);  for(i=0; i<pOp->p1; i++, pFrom++){    Deephemeralize(&pFrom[1]);    assert( (pFrom->flags & MEM_Ephem)==0 );    *pFrom = pFrom[1];    if( pFrom->flags & MEM_Short ){      assert( pFrom->flags & (MEM_Str|MEM_Blob) );      assert( pFrom->z==pFrom[1].zShort );      pFrom->z = pFrom->zShort;    }  }  *pTos = ts;  if( pTos->flags & MEM_Short ){    assert( pTos->flags & (MEM_Str|MEM_Blob) );    assert( pTos->z==pTos[-pOp->p1].zShort );    pTos->z = pTos->zShort;  }  break;}/* Opcode: Push P1 * ***** Overwrite the value of the P1-th element down on the** stack (P1==0 is the top of the stack) with the value** of the top of the stack.  Then pop the top of the stack.*/case OP_Push: {            /* no-push */  Mem *pTo = &pTos[-pOp->p1];  assert( pTo>=p->aStack );  sqlite3VdbeMemMove(pTo, pTos);  pTos--;  break;}/* Opcode: Callback P1 * ***** The top P1 values on the stack represent a single result row from** a query.  This opcode causes the sqlite3_step() call to terminate** with an SQLITE_ROW return code and it sets up the sqlite3_stmt** structure to provide access to the top P1 values as the result** row.  When the sqlite3_step() function is run again, the top P1** values will be automatically popped from the stack before the next** instruction executes.*/case OP_Callback: {            /* no-push */  Mem *pMem;  Mem *pFirstColumn;  assert( p->nResColumn==pOp->p1 );  /* Data in the pager might be moved or changed out from under us  ** in between the return from this sqlite3_step() call and the  ** next call to sqlite3_step().  So deephermeralize everything on   ** the stack.  Note that ephemeral data is never stored in memory   ** cells so we do not have to worry about them.  */  pFirstColumn = &pTos[0-pOp->p1];  for(pMem = p->aStack; pMem<pFirstColumn; pMem++){    Deephemeralize(pMem);  }  /* Invalidate all ephemeral cursor row caches */  p->cacheCtr = (p->cacheCtr + 2)|1;  /* Make sure the results of the current row are \000 terminated  ** and have an assigned type.  The results are deephemeralized as  ** as side effect.  */  for(; pMem<=pTos; pMem++ ){    sqlite3VdbeMemNulTerminate(pMem);    storeTypeInfo(pMem, encoding);  }  /* Set up the statement structure so that it will pop the current  ** results from the stack when the statement returns.  */  p->resOnStack = 1;  p->nCallback++;  p->popStack = pOp->p1;  p->pc = pc + 1;  p->pTos = pTos;  return SQLITE_ROW;}/* Opcode: Concat P1 P2 ***** Look at the first P1+2 elements of the stack.  Append them all ** together with the lowest element first.  The original P1+2 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.**** When P1==1, this routine makes a copy of the top stack element** into memory obtained from sqliteMalloc().*/case OP_Concat: {           /* same as TK_CONCAT */  char *zNew;  int nByte;  int nField;  int i, j;  Mem *pTerm;  /* Loop through the stack elements to see how long the result will be. */  nField = pOp->p1 + 2;  pTerm = &pTos[1-nField];  nByte = 0;  for(i=0; i<nField; i++, pTerm++){    assert( pOp->p2==0 || (pTerm->flags&MEM_Str) );    if( pTerm->flags&MEM_Null ){      nByte = -1;      break;    }    Stringify(pTerm, encoding);    nByte += pTerm->n;  }  if( nByte<0 ){    /* If nByte is less than zero, then there is a NULL value on the stack.    ** In this case just pop the values off the stack (if required) and    ** push on a NULL.    */    if( pOp->p2==0 ){      popStack(&pTos, nField);    }    pTos++;    pTos->flags = MEM_Null;  }else{    /* Otherwise malloc() space for the result and concatenate all the    ** stack values.    */    zNew = sqliteMallocRaw( nByte+2 );    if( zNew==0 ) goto no_mem;    j = 0;    pTerm = &pTos[1-nField];    for(i=j=0; i<nField; i++, pTerm++){      int n = pTerm->n;      assert( pTerm->flags & (MEM_Str|MEM_Blob) );      memcpy(&zNew[j], pTerm->z, n);      j += n;    }    zNew[j] = 0;    zNew[j+1] = 0;    assert( j==nByte );    if( pOp->p2==0 ){      popStack(&pTos, nField);    }    pTos++;    pTos->n = j;    pTos->flags = MEM_Str|MEM_Dyn|MEM_Term;    pTos->xDel = 0;    pTos->enc = encoding;    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:                   /* same as TK_PLUS, no-push */case OP_Subtract:              /* same as TK_MINUS, no-push */case OP_Multiply:              /* same as TK_STAR, no-push */case OP_Divide:                /* same as TK_SLASH, no-push */case OP_Remainder: {           /* same as TK_REM, no-push */  Mem *pNos = &pTos[-1];  int flags;  assert( pNos>=p->aStack );  flags = pTos->flags | pNos->flags;  if( (flags & MEM_Null)!=0 ){    Release(pTos);    pTos--;    Release(pTos);    pTos->flags = MEM_Null;  }else if( (pTos->flags & pNos->flags & MEM_Int)==MEM_Int ){    i64 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;    a = sqlite3VdbeRealValue(pTos);    b = sqlite3VdbeRealValue(pNos);    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;    if( (flags & MEM_Real)==0 ){      sqlite3VdbeIntegerAffinity(pTos);    }  }  break;divide_by_zero:  Release(pTos);  pTos--;  Release(pTos);  pTos->flags = MEM_Null;  break;}/* Opcode: CollSeq * * P3**** P3 is a pointer to a CollSeq struct. If the next call to a user function** or aggregate calls sqlite3GetFuncCollSeq(), this collation sequence will** be returned. This is used by the built-in min(), max() and nullif()** functions.**** The interface used by the implementation of the aforementioned functions** to retrieve the collation sequence set by this opcode is not available** publicly, only to user functions defined in func.c.*/case OP_CollSeq: {             /* no-push */  assert( pOp->p3type==P3_COLLSEQ );  break;}/* Opcode: Function P1 P2 P3**** Invoke a user function (P3 is a pointer to a Function structure that** defines the function) with P2 arguments taken from the stack.  Pop all** arguments from the stack and push back the result.**** P1 is a 32-bit bitmask indicating whether or not each argument to the ** function was determined to be constant at compile time. If the first** argument was constant then bit 0 of P1 is set. This is used to determine** whether meta data associated with a user function argument using the** sqlite3_set_auxdata() API may be safely retained until the next** invocation of this opcode.**** See also: AggStep and AggFinal*/case OP_Function: {  int i;  Mem *pArg;  sqlite3_context ctx;  sqlite3_value **apVal;  int n = pOp->p2;  apVal = p->apArg;  assert( apVal || n==0 );  pArg = &pTos[1-n];  for(i=0; i<n; i++, pArg++){    apVal[i] = pArg;    storeTypeInfo(pArg, encoding);  }  assert( pOp->p3type==P3_FUNCDEF || pOp->p3type==P3_VDBEFUNC );  if( pOp->p3type==P3_FUNCDEF ){    ctx.pFunc = (FuncDef*)pOp->p3;    ctx.pVdbeFunc = 0;  }else{    ctx.pVdbeFunc = (VdbeFunc*)pOp->p3;    ctx.pFunc = ctx.pVdbeFunc->pFunc;  }  ctx.s.flags = MEM_Null;  ctx.s.z = 0;  ctx.s.xDel = 0;  ctx.isError = 0;  if( ctx.pFunc->needCollSeq ){    assert( pOp>p->aOp );    assert( pOp[-1].p3type==P3_COLLSEQ );    assert( pOp[-1].opcode==OP_CollSeq );    ctx.pColl = (CollSeq *)pOp[-1].p3;  }  if( sqlite3SafetyOff(db) ) goto abort_due_to_misuse;  (*ctx.pFunc->xFunc)(&ctx, n, apVal);  if( sqlite3SafetyOn(db) ) goto abort_due_to_misuse;  if( sqlite3MallocFailed() ) goto no_mem;  popStack(&pTos, n);  /* If any auxilary data functions have been called by this user function,  ** immediately call the destructor for any non-static values.  */  if( ctx.pVdbeFunc ){    sqlite3VdbeDeleteAuxData(ctx.pVdbeFunc, pOp->p1);    pOp->p3 = (char *)ctx.pVdbeFunc;    pOp->p3type = P3_VDBEFUNC;  }  /* If the function returned an error, throw an exception */  if( ctx.isError ){    sqlite3SetString(&p->zErrMsg, sqlite3_value_text(&ctx.s), (char*)0);    rc = SQLITE_ERROR;  }  /* Copy the result of the function to the top of the stack */  sqlite3VdbeChangeEncoding(&ctx.s, encoding);  pTos++;  pTos->flags = 0;  sqlite3VdbeMemMove(pTos, &ctx.s);  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 second element shifted** left by N bits where N is the top 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女久久久精品| 亚洲欧美乱综合| 久久91精品久久久久久秒播| 91精品国产色综合久久不卡蜜臀| 亚洲成人激情社区| 欧美一级理论片| 国产精品一品二品| 1024精品合集| 欧美挠脚心视频网站| 免费观看在线综合色| 久久婷婷久久一区二区三区| 丁香婷婷综合色啪| 一区二区三区蜜桃网| 欧美一区二区三区影视| 国产成人免费视频精品含羞草妖精| 欧美激情中文字幕一区二区| 色婷婷一区二区| 蜜臀久久久99精品久久久久久| 国产偷国产偷精品高清尤物| 99国产精品国产精品毛片| 午夜视频一区在线观看| 国产人妖乱国产精品人妖| 色吊一区二区三区| 国产一区欧美一区| 亚洲午夜影视影院在线观看| 久久久久国产精品厨房| 在线中文字幕一区二区| 久久国产成人午夜av影院| 亚洲视频香蕉人妖| 欧美不卡在线视频| 91黄色免费观看| 国产一区不卡精品| 午夜伊人狠狠久久| 亚洲欧洲精品天堂一级| 欧美一区二区三区思思人| 99视频精品免费视频| 精品制服美女久久| 亚洲国产欧美在线| 国产精品伦理在线| 精品成人免费观看| 欧美日本不卡视频| 91在线丨porny丨国产| 久99久精品视频免费观看| 亚洲综合视频在线观看| 中文字幕不卡在线播放| 69久久夜色精品国产69蝌蚪网| 成人动漫在线一区| 韩国女主播一区二区三区| 亚洲成人免费av| 亚洲视频免费在线观看| 久久久久国产精品人| 欧美一二三区在线观看| 欧美午夜精品久久久久久孕妇| 国产99久久精品| 国产一区二区精品久久99| 蜜桃精品视频在线| 亚洲丶国产丶欧美一区二区三区| 亚洲蜜臀av乱码久久精品| 国产午夜精品理论片a级大结局| 日韩一二三四区| 91精品一区二区三区久久久久久| 色av一区二区| 日本道在线观看一区二区| www.综合网.com| 99精品视频在线免费观看| 丰满白嫩尤物一区二区| 国产精品白丝av| 国产一区二区三区四| 国产一区在线精品| 国产福利一区二区三区| 国产iv一区二区三区| 丁香六月综合激情| 成人在线一区二区三区| 成人av影视在线观看| 懂色av一区二区三区免费看| 成人午夜精品在线| av激情亚洲男人天堂| 99re66热这里只有精品3直播 | 欧美日韩成人综合天天影院 | 亚洲成人综合视频| 亚洲综合在线免费观看| 亚洲在线中文字幕| 日韩二区三区四区| 六月丁香综合在线视频| 国产一区视频网站| 成人理论电影网| 97se狠狠狠综合亚洲狠狠| 一本色道久久综合精品竹菊| 色吊一区二区三区| 69精品人人人人| 久久久777精品电影网影网| 国产精品乱子久久久久| 夜夜精品视频一区二区| 三级久久三级久久| 国产精品99久久久久久久vr | 久久综合综合久久综合| 国产在线精品免费| 成人美女视频在线看| 91免费视频观看| 欧美美女黄视频| 精品三级在线看| 中国av一区二区三区| 一级精品视频在线观看宜春院| 午夜精品久久久久久久| 经典三级视频一区| 91麻豆福利精品推荐| 欧美少妇性性性| 久久久久久久久99精品| 亚洲精品久久7777| 九九久久精品视频| 在线视频综合导航| 欧美精品一区视频| 亚洲美女屁股眼交| 美女一区二区久久| 色综合咪咪久久| 亚洲精品一区二区三区精华液 | 国产乱码精品一区二区三区忘忧草| 国产99久久久久| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区国产盗摄色噜噜| 日日嗨av一区二区三区四区| 成人精品免费看| 在线观看91av| 亚洲日本乱码在线观看| 久久99精品国产.久久久久久| 91毛片在线观看| 国产午夜精品理论片a级大结局| 亚洲bt欧美bt精品| 91视频免费看| 国产日韩综合av| 另类中文字幕网| 欧美精品一卡二卡| 玉米视频成人免费看| 国产福利不卡视频| 欧美videofree性高清杂交| 亚洲电影一区二区三区| 99精品视频一区二区三区| 欧美成人精品福利| 夜夜操天天操亚洲| 91丝袜高跟美女视频| 国产欧美va欧美不卡在线| 日韩高清不卡一区| 日本国产一区二区| 18涩涩午夜精品.www| 国产精品91xxx| 精品国产一二三| 日韩av不卡一区二区| 91国在线观看| 夜夜嗨av一区二区三区四季av| 99热精品国产| 亚洲欧洲成人精品av97| 国产精品456| 欧美激情综合在线| 国产不卡在线一区| 国产精品免费av| 成人高清伦理免费影院在线观看| 国产欧美一区二区在线| 国产毛片精品视频| 久久久久国产精品人| 国产激情精品久久久第一区二区| 日韩欧美国产麻豆| 久久66热re国产| 亚洲精品一区在线观看| 国产一区二区伦理| 国产亚洲一二三区| 国产成人免费高清| 亚洲欧洲日本在线| 在线观看亚洲专区| 亚洲第一会所有码转帖| 欧美一区二区三区视频免费播放| 午夜精品久久久久久久久| 欧美一区二区三区电影| 久久成人免费网| 26uuu亚洲婷婷狠狠天堂| 国产一区二区精品久久91| 国产日产欧美一区| 95精品视频在线| 亚洲国产视频在线| 欧美一区二区久久久| 黑人巨大精品欧美一区| 国产清纯白嫩初高生在线观看91 | 久久精品一级爱片| 成人av午夜影院| 亚洲精品一二三四区| 欧美精品少妇一区二区三区 | 亚洲一区在线观看视频| 9191久久久久久久久久久| 美女网站一区二区| 国产午夜精品久久久久久免费视 | 国产精品色眯眯| 91在线观看污| 视频一区二区欧美| 久久精品免费在线观看| 91亚洲午夜精品久久久久久| 一区二区三区四区不卡在线 | 欧洲一区在线观看| 精品一区二区在线免费观看| 国产日韩欧美一区二区三区乱码| 色婷婷亚洲精品| 裸体在线国模精品偷拍|