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

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

?? vdbe.c

?? 這是一個(gè)嵌入式系統(tǒng)上運(yùn)行的輕量級(jí)數(shù)據(jù)庫(kù)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* Opcode: Eq P1 P2 ***** Pop the top two elements from the stack.  If they are equal, then** jump to instruction P2.  Otherwise, continue to the next instruction.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared for equality that way.  Otherwise the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrEq.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: Ne P1 P2 ***** Pop the top two elements from the stack.  If they are not equal, then** jump to instruction P2.  Otherwise, continue to the next instruction.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared in that format.  Otherwise the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrNe.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: Lt P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is less than the first (the top of stack), then** jump to instruction P2.  Otherwise, continue to the next instruction.** In other words, jump if NOS<TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared in that format.  Numeric values are always less than** non-numeric values.  If both operands are non-numeric, the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrLt.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: Le P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is less than or equal to the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS<=TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared in that format.  Numeric values are always less than** non-numeric values.  If both operands are non-numeric, the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrLe.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: Gt P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is greater than the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS>TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared in that format.  Numeric values are always less than** non-numeric values.  If both operands are non-numeric, the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrGt.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: Ge P1 P2 ***** Pop the top two elements from the stack.  If second element (the next** on stack) is greater than or equal to the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS>=TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** If both values are numeric, they are converted to doubles using atof()** and compared in that format.  Numeric values are always less than** non-numeric values.  If both operands are non-numeric, the strcmp() library** routine is used for the comparison.  For a pure text comparison** use OP_StrGe.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*/case OP_Eq:case OP_Ne:case OP_Lt:case OP_Le:case OP_Gt:case OP_Ge: {  Mem *pNos = &pTos[-1];  int c, v;  int ft, fn;  assert( pNos>=p->aStack );  ft = pTos->flags;  fn = pNos->flags;  if( (ft | fn) & MEM_Null ){    popStack(&pTos, 2);    if( pOp->p2 ){      if( pOp->p1 ) pc = pOp->p2-1;    }else{      pTos++;      pTos->flags = MEM_Null;    }    break;  }else if( (ft & fn & MEM_Int)==MEM_Int ){    c = pNos->i - pTos->i;  }else if( (ft & MEM_Int)!=0 && (fn & MEM_Str)!=0 && toInt(pNos->z,&v) ){    c = v - pTos->i;  }else if( (fn & MEM_Int)!=0 && (ft & MEM_Str)!=0 && toInt(pTos->z,&v) ){    c = pNos->i - v;  }else{    Stringify(pTos);    Stringify(pNos);    c = sqliteCompare(pNos->z, pTos->z);  }  switch( pOp->opcode ){    case OP_Eq:    c = c==0;     break;    case OP_Ne:    c = c!=0;     break;    case OP_Lt:    c = c<0;      break;    case OP_Le:    c = c<=0;     break;    case OP_Gt:    c = c>0;      break;    default:       c = c>=0;     break;  }  popStack(&pTos, 2);  if( pOp->p2 ){    if( c ) pc = pOp->p2-1;  }else{    pTos++;    pTos->i = c;    pTos->flags = MEM_Int;  }  break;}/* INSERT NO CODE HERE!**** The opcode numbers are extracted from this source file by doing****    grep '^case OP_' vdbe.c | ... >opcodes.h**** The opcodes are numbered in the order that they appear in this file.** But in order for the expression generating code to work right, the** string comparison operators that follow must be numbered exactly 6** greater than the numeric comparison opcodes above.  So no other** cases can appear between the two.*//* Opcode: StrEq P1 P2 ***** Pop the top two elements from the stack.  If they are equal, then** jump to instruction P2.  Otherwise, continue to the next instruction.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Eq.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: StrNe P1 P2 ***** Pop the top two elements from the stack.  If they are not equal, then** jump to instruction P2.  Otherwise, continue to the next instruction.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Ne.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: StrLt P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is less than the first (the top of stack), then** jump to instruction P2.  Otherwise, continue to the next instruction.** In other words, jump if NOS<TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Lt.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: StrLe P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is less than or equal to the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS<=TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Le.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: StrGt P1 P2 ***** Pop the top two elements from the stack.  If second element (the** next on stack) is greater than the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS>TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Gt.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*//* Opcode: StrGe P1 P2 ***** Pop the top two elements from the stack.  If second element (the next** on stack) is greater than or equal to the first (the top of stack),** then jump to instruction P2. In other words, jump if NOS>=TOS.**** If either operand is NULL (and thus if the result is unknown) then** take the jump if P1 is true.**** The strcmp() library routine is used for the comparison.  For a** numeric comparison, use OP_Ge.**** If P2 is zero, do not jump.  Instead, push an integer 1 onto the** stack if the jump would have been taken, or a 0 if not.  Push a** NULL if either operand was NULL.*/case OP_StrEq:case OP_StrNe:case OP_StrLt:case OP_StrLe:case OP_StrGt:case OP_StrGe: {  Mem *pNos = &pTos[-1];  int c;  assert( pNos>=p->aStack );  if( (pNos->flags | pTos->flags) & MEM_Null ){    popStack(&pTos, 2);    if( pOp->p2 ){      if( pOp->p1 ) pc = pOp->p2-1;    }else{      pTos++;      pTos->flags = MEM_Null;    }    break;  }else{    Stringify(pTos);    Stringify(pNos);    c = strcmp(pNos->z, pTos->z);  }  /* The asserts on each case of the following switch are there to verify  ** that string comparison opcodes are always exactly 6 greater than the  ** corresponding numeric comparison opcodes.  The code generator depends  ** on this fact.  */  switch( pOp->opcode ){    case OP_StrEq:    c = c==0;    assert( pOp->opcode-6==OP_Eq );   break;    case OP_StrNe:    c = c!=0;    assert( pOp->opcode-6==OP_Ne );   break;    case OP_StrLt:    c = c<0;     assert( pOp->opcode-6==OP_Lt );   break;    case OP_StrLe:    c = c<=0;    assert( pOp->opcode-6==OP_Le );   break;    case OP_StrGt:    c = c>0;     assert( pOp->opcode-6==OP_Gt );   break;    default:          c = c>=0;    assert( pOp->opcode-6==OP_Ge );   break;  }  popStack(&pTos, 2);  if( pOp->p2 ){    if( c ) pc = pOp->p2-1;  }else{    pTos++;    pTos->flags = MEM_Int;    pTos->i = c;  }  break;}/* Opcode: And * * ***** Pop two values off the stack.  Take the logical AND of the** two values and push the resulting boolean value back onto the** stack. *//* Opcode: Or * * ***** Pop two values off the stack.  Take the logical OR of the** two values and push the resulting boolean value back onto the** stack. */case OP_And:case OP_Or: {  Mem *pNos = &pTos[-1];  int v1, v2;    /* 0==TRUE, 1==FALSE, 2==UNKNOWN or NULL */  assert( pNos>=p->aStack );  if( pTos->flags & MEM_Null ){    v1 = 2;  }else{    Integerify(pTos);    v1 = pTos->i==0;  }  if( pNos->flags & MEM_Null ){    v2 = 2;  }else{    Integerify(pNos);    v2 = pNos->i==0;  }  if( pOp->opcode==OP_And ){    static const unsigned char and_logic[] = { 0, 1, 2, 1, 1, 1, 2, 1, 2 };    v1 = and_logic[v1*3+v2];  }else{    static const unsigned char or_logic[] = { 0, 0, 0, 0, 1, 2, 0, 2, 2 };    v1 = or_logic[v1*3+v2];  }  popStack(&pTos, 2);  pTos++;  if( v1==2 ){    pTos->flags = MEM_Null;  }else{    pTos->i = v1==0;    pTos->flags = MEM_Int;  }  break;}/* Opcode: Negative * * ***** Treat the top of the stack as a numeric quantity.  Replace it** with its additive inverse.  If the top of the stack is NULL** its value is unchanged.*//* Opcode: AbsValue * * ***** Treat the top of the stack as a numeric quantity.  Replace it** with its absolute value. If the top of the stack is NULL** its value is unchanged.*/case OP_Negative:case OP_AbsValue: {  assert( pTos>=p->aStack );  if( pTos->flags & MEM_Real ){    Release(pTos);    if( pOp->opcode==OP_Negative || pTos->r<0.0 ){      pTos->r = -pTos->r;    }    pTos->flags = MEM_Real;  }else if( pTos->flags & MEM_Int ){    Release(pTos);    if( pOp->opcode==OP_Negative || pTos->i<0 ){      pTos->i = -pTos->i;    }    pTos->flags = MEM_Int;  }else if( pTos->flags & MEM_Null ){    /* Do nothing */  }else{    Realify(pTos);    Release(pTos);    if( pOp->opcode==OP_Negative || pTos->r<0.0 ){      pTos->r = -pTos->r;    }    pTos->flags = MEM_Real;  }  break;}/* Opcode: Not * * ***** Interpret the top of the stack as a boolean value.  Replace it** with its complement.  If the top of the stack is NULL its value** is unchanged.*/case OP_Not: {  assert( pTos>=p->aStack );  if( pTos->flags & MEM_Null ) break;  /* Do nothing to NULLs */  Integerify(pTos);  Release(pTos);  pTos->i = !pTos->i;  pTos->flags = MEM_Int;  break;}/* Opcode: BitNot * * ***** Interpret the top of the stack as an value.  Replace it** with its ones-complement.  If the top of the stack is NULL its** value is unchanged.*/case OP_BitNot: {  assert( pTos>=p->aStack );  if( pTos->flags & MEM_Null ) break;  /* Do nothing to NULLs */  Integerify(pTos);  Release(pTos);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区视频二区中文| 国产白丝网站精品污在线入口| 亚洲成人自拍网| 国产成人啪免费观看软件| 欧美综合一区二区| 日本一区二区三区国色天香| 性久久久久久久| av在线综合网| 久久综合九色综合97婷婷| 亚洲一区二区精品视频| caoporen国产精品视频| 久久众筹精品私拍模特| 日产精品久久久久久久性色| 色综合夜色一区| 国产精品免费观看视频| 久久av资源站| 91精品国产日韩91久久久久久| 亚洲精品久久久蜜桃| av电影天堂一区二区在线| 精品播放一区二区| 毛片av中文字幕一区二区| 欧美精品自拍偷拍动漫精品| 亚洲精品美腿丝袜| 色婷婷久久综合| 国产精品国产三级国产aⅴ原创 | 97精品超碰一区二区三区| 欧美精品一区二区三区在线| 青青青伊人色综合久久| 欧美日韩在线观看一区二区| 亚洲一区国产视频| 在线亚洲+欧美+日本专区| 国产精品的网站| 成人免费观看视频| 中文字幕乱码久久午夜不卡| 国产成人精品免费视频网站| 久久精品人人做人人爽人人| 国产在线一区二区综合免费视频| 精品日韩一区二区三区免费视频| 蜜臀av一区二区在线免费观看 | 亚洲午夜久久久久久久久电影院| av一区二区三区| 国产精品久久久久一区二区三区共 | 国产精品久久久久久久久免费樱桃 | 成人a区在线观看| 夜夜嗨av一区二区三区网页| 99国产精品视频免费观看| 亚洲色图在线视频| 欧美日韩精品三区| 久久99精品国产91久久来源| 久久亚洲精精品中文字幕早川悠里| 国产乱妇无码大片在线观看| 日本一区二区三区国色天香| 99国产精品久| 日韩精品亚洲一区| 亚洲精品一区二区三区影院| 丁香婷婷综合网| 亚洲一区二区高清| 日韩欧美第一区| 国产成a人亚洲精| 亚洲欧美另类图片小说| 日韩一区二区在线看| 国产.欧美.日韩| 一区二区三区精品在线| 91精品国产欧美一区二区成人| 精品一区二区综合| 国产精品美女一区二区| 欧美日韩aaaaa| 国产曰批免费观看久久久| 最新不卡av在线| 欧美一级搡bbbb搡bbbb| gogogo免费视频观看亚洲一| 亚洲一区免费在线观看| 久久久久久久国产精品影院| 欧美亚洲日本国产| 国产一区二区伦理片| 国产精品成人一区二区艾草| 欧美日韩亚洲另类| 不卡av在线网| 毛片不卡一区二区| 一区二区三区四区不卡在线| 日韩伦理电影网| 精品国产欧美一区二区| 色综合色狠狠综合色| 久久国产精品免费| 夜夜嗨av一区二区三区网页 | 国产婷婷色一区二区三区四区| 色婷婷精品大在线视频| 激情综合网av| 天堂一区二区在线免费观看| 国产精品成人网| 精品久久久久久最新网址| 欧美日韩国产片| 日本高清不卡aⅴ免费网站| 国产原创一区二区三区| 另类小说欧美激情| 亚洲国产一区二区三区 | 91麻豆成人久久精品二区三区| 久久国产生活片100| 亚洲国产va精品久久久不卡综合| 国产精品视频yy9299一区| 精品欧美乱码久久久久久1区2区| 欧美亚洲尤物久久| 91成人看片片| 在线看国产一区二区| 91在线国内视频| 99视频一区二区| 国产91丝袜在线播放0| 国产曰批免费观看久久久| 久久99精品国产| 久久99久久99小草精品免视看| 日本午夜一区二区| 日本视频一区二区三区| 日韩黄色在线观看| 亚洲gay无套男同| 亚洲成人免费影院| 亚洲一区二区三区爽爽爽爽爽| 亚洲人成网站精品片在线观看| 国产精品久线观看视频| 国产精品乱码一区二三区小蝌蚪| 国产欧美日韩亚州综合| 国产校园另类小说区| 欧美高清在线一区二区| 国产精品色在线| 亚洲免费在线视频一区 二区| 一区在线播放视频| 亚洲精品第1页| 亚洲国产成人高清精品| 日精品一区二区| 美女网站在线免费欧美精品| 国产在线精品国自产拍免费| 国产精品亚洲午夜一区二区三区| 国产一区二区三区四区在线观看 | 亚洲成人久久影院| 亚洲1区2区3区4区| 日韩电影免费在线看| 久久99国产精品久久99| 国内精品免费**视频| 白白色 亚洲乱淫| 欧美唯美清纯偷拍| 日韩午夜三级在线| 久久久精品影视| 亚洲欧美偷拍三级| 天堂在线亚洲视频| 国产成人午夜片在线观看高清观看| yourporn久久国产精品| 欧美日韩精品三区| 精品国产免费人成电影在线观看四季 | 亚洲午夜在线电影| 久久99国产乱子伦精品免费| 成人一二三区视频| 欧美性色综合网| 精品国产成人系列| 亚洲精品日韩综合观看成人91| 日韩成人一区二区三区在线观看| 国产一区二区三区观看| 在线观看欧美日本| 欧美精品一区视频| 悠悠色在线精品| 国产精品一级片在线观看| 欧美午夜理伦三级在线观看| 久久久久久免费网| 偷拍亚洲欧洲综合| 99久久免费国产| 日韩一区二区影院| 亚洲精品国产一区二区精华液| 久久疯狂做爰流白浆xx| 色婷婷av一区二区三区gif| 久久影音资源网| 日韩精品一级中文字幕精品视频免费观看| 国产成人精品一区二| 欧美一区二区三区性视频| 亚洲欧美在线视频观看| 国产一区二区三区视频在线播放| 欧美裸体bbwbbwbbw| 自拍视频在线观看一区二区| 国产成人亚洲精品青草天美| 欧美一级久久久| 性感美女久久精品| 色一情一乱一乱一91av| 国产精品久久久久影院亚瑟| 国产酒店精品激情| 日韩欧美你懂的| 婷婷久久综合九色综合伊人色| 91在线精品秘密一区二区| 国产三级精品视频| 国产一区二区三区在线观看免费 | 久久久久国产精品人| 丝袜美腿亚洲一区| 日本精品一级二级| 国产精品伦一区二区三级视频| 国产久卡久卡久卡久卡视频精品| 欧美一级xxx| 免费高清在线视频一区·| 国产无人区一区二区三区| 免费三级欧美电影| 日韩欧美激情一区| 日本欧美肥老太交大片| 91麻豆精品91久久久久久清纯 | 一区视频在线播放| 成人黄色片在线观看|