System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6178de4d156a88616ebf3db25dee628504a2b49f:


0000: 2f 2a 0a 20 20 20 54 68 69 73 20 69 6e 74 65 72  /*.   This inter
0010: 6f 70 20 66 69 6c 65 20 6d 75 73 74 20 62 65 20  op file must be 
0020: 69 6e 63 6c 75 64 65 64 20 61 74 20 6f 72 20 6e  included at or n
0030: 65 61 72 20 74 68 65 20 74 6f 70 20 6f 66 20 74  ear the top of t
0040: 68 65 20 73 65 6c 65 63 74 2e 63 20 66 69 6c 65  he select.c file
0050: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 33 20   of the SQLite3 
0060: 73 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74  source distribut
0070: 69 6f 6e 2e 0a 0a 20 20 20 67 65 6e 65 72 61 74  ion...   generat
0080: 65 43 6f 6c 75 6d 6e 4e 61 6d 65 73 28 29 20 69  eColumnNames() i
0090: 6e 20 74 68 65 20 73 65 6c 65 63 74 2e 63 20 6d  n the select.c m
00a0: 75 73 74 20 62 65 20 72 65 6e 61 6d 65 64 20 74  ust be renamed t
00b0: 6f 20 5f 67 65 6e 65 72 61 74 65 43 6f 6c 75 6d  o _generateColum
00c0: 6e 4e 61 6d 65 73 0a 0a 2a 2f 0a 0a 23 69 6e 63  nNames..*/..#inc
00d0: 6c 75 64 65 20 22 73 72 63 2f 73 71 6c 69 74 65  lude "src/sqlite
00e0: 69 6e 74 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20  int.h".#include 
00f0: 22 73 72 63 5c 6f 73 2e 68 22 0a 0a 23 69 66 20  "src\os.h"..#if 
0100: 5f 57 49 4e 33 32 5f 57 43 45 20 26 26 20 4e 44  _WIN32_WCE && ND
0110: 45 42 55 47 0a 23 69 6e 63 6c 75 64 65 20 22 6d  EBUG.#include "m
0120: 65 72 67 65 2e 68 22 0a 23 65 6e 64 69 66 0a 0a  erge.h".#endif..
0130: 2f 2f 20 46 6f 72 77 61 72 64 20 64 65 63 6c 61  // Forward decla
0140: 72 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  re this function
0150: 2c 20 77 65 27 72 65 20 69 6d 70 6c 65 6d 65 6e  , we're implemen
0160: 74 69 6e 67 20 69 74 20 6c 61 74 65 72 0a 73 74  ting it later.st
0170: 61 74 69 63 20 76 6f 69 64 20 67 65 6e 65 72 61  atic void genera
0180: 74 65 43 6f 6c 75 6d 6e 4e 61 6d 65 73 28 0a 20  teColumnNames(. 
0190: 20 50 61 72 73 65 20 2a 70 50 61 72 73 65 2c 20   Parse *pParse, 
01a0: 20 20 20 20 20 2f 2a 20 50 61 72 73 65 72 20 63       /* Parser c
01b0: 6f 6e 74 65 78 74 20 2a 2f 0a 20 20 53 72 63 4c  ontext */.  SrcL
01c0: 69 73 74 20 2a 70 54 61 62 4c 69 73 74 2c 20 20  ist *pTabList,  
01d0: 2f 2a 20 4c 69 73 74 20 6f 66 20 74 61 62 6c 65  /* List of table
01e0: 73 20 2a 2f 0a 20 20 45 78 70 72 4c 69 73 74 20  s */.  ExprList 
01f0: 2a 70 45 4c 69 73 74 20 20 20 20 2f 2a 20 45 78  *pEList    /* Ex
0200: 70 72 65 73 73 69 6f 6e 73 20 64 65 66 69 6e 69  pressions defini
0210: 6e 67 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  ng the result se
0220: 74 20 2a 2f 0a 29 3b 0a 0a 23 69 6e 63 6c 75 64  t */.);..#includ
0230: 65 20 22 73 72 63 5c 73 65 6c 65 63 74 2e 63 22  e "src\select.c"
0240: 0a 0a 2f 2a 0a 2a 2a 20 47 65 6e 65 72 61 74 65  ../*.** Generate
0250: 20 63 6f 64 65 20 74 68 61 74 20 77 69 6c 6c 20   code that will 
0260: 74 65 6c 6c 20 74 68 65 20 56 44 42 45 20 74 68  tell the VDBE th
0270: 65 20 6e 61 6d 65 73 20 6f 66 20 63 6f 6c 75 6d  e names of colum
0280: 6e 73 0a 2a 2a 20 69 6e 20 74 68 65 20 72 65 73  ns.** in the res
0290: 75 6c 74 20 73 65 74 2e 20 20 54 68 69 73 20 69  ult set.  This i
02a0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 75 73  nformation is us
02b0: 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68  ed to provide th
02c0: 65 0a 2a 2a 20 61 7a 43 6f 6c 5b 5d 20 76 61 6c  e.** azCol[] val
02d0: 75 65 73 20 69 6e 20 74 68 65 20 63 61 6c 6c 62  ues in the callb
02e0: 61 63 6b 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 76  ack..*/.static v
02f0: 6f 69 64 20 67 65 6e 65 72 61 74 65 43 6f 6c 75  oid generateColu
0300: 6d 6e 4e 61 6d 65 73 28 0a 20 20 50 61 72 73 65  mnNames(.  Parse
0310: 20 2a 70 50 61 72 73 65 2c 20 20 20 20 20 20 2f   *pParse,      /
0320: 2a 20 50 61 72 73 65 72 20 63 6f 6e 74 65 78 74  * Parser context
0330: 20 2a 2f 0a 20 20 53 72 63 4c 69 73 74 20 2a 70   */.  SrcList *p
0340: 54 61 62 4c 69 73 74 2c 20 20 2f 2a 20 4c 69 73  TabList,  /* Lis
0350: 74 20 6f 66 20 74 61 62 6c 65 73 20 2a 2f 0a 20  t of tables */. 
0360: 20 45 78 70 72 4c 69 73 74 20 2a 70 45 4c 69 73   ExprList *pELis
0370: 74 20 20 20 20 2f 2a 20 45 78 70 72 65 73 73 69  t    /* Expressi
0380: 6f 6e 73 20 64 65 66 69 6e 69 6e 67 20 74 68 65  ons defining the
0390: 20 72 65 73 75 6c 74 20 73 65 74 20 2a 2f 0a 29   result set */.)
03a0: 7b 0a 20 20 56 64 62 65 20 2a 76 20 3d 20 70 50  {.  Vdbe *v = pP
03b0: 61 72 73 65 2d 3e 70 56 64 62 65 3b 0a 20 20 69  arse->pVdbe;.  i
03c0: 6e 74 20 69 2c 20 6a 3b 0a 20 20 73 71 6c 69 74  nt i, j;.  sqlit
03d0: 65 33 20 2a 64 62 20 3d 20 70 50 61 72 73 65 2d  e3 *db = pParse-
03e0: 3e 64 62 3b 0a 20 20 69 6e 74 20 66 75 6c 6c 4e  >db;.  int fullN
03f0: 61 6d 65 73 2c 20 73 68 6f 72 74 4e 61 6d 65 73  ames, shortNames
0400: 3b 0a 20 20 69 6e 74 20 72 65 61 6c 4e 61 6d 65  ;.  int realName
0410: 73 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s;              
0420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0430: 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45         /*** ADDE
0440: 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  D - SQLite.Inter
0450: 6f 70 20 2a 2a 2a 2f 0a 0a 20 20 72 65 61 6c 4e  op ***/..  realN
0460: 61 6d 65 73 20 3d 20 28 64 62 2d 3e 66 6c 61 67  ames = (db->flag
0470: 73 20 26 20 30 78 30 31 30 30 30 30 30 30 29 21  s & 0x01000000)!
0480: 3d 30 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a  =0;           /*
0490: 2a 2a 20 41 44 44 45 44 20 2d 20 53 51 4c 69 74  ** ADDED - SQLit
04a0: 65 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 20  e.Interop ***/. 
04b0: 20 69 66 20 28 21 72 65 61 6c 4e 61 6d 65 73 29   if (!realNames)
04c0: 20 2f 2f 20 44 65 66 61 75 6c 74 20 74 6f 20 6e   // Default to n
04d0: 6f 72 6d 61 6c 20 53 71 6c 69 74 65 33 20 20 20  ormal Sqlite3   
04e0: 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20 2d      /*** ADDED -
04f0: 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20   SQLite.Interop 
0500: 2a 2a 2a 2f 0a 20 20 7b 20 20 20 20 20 20 20 20  ***/.  {        
0510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0530: 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41            /*** A
0540: 44 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e  DDED - SQLite.In
0550: 74 65 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 5f  terop ***/.    _
0560: 67 65 6e 65 72 61 74 65 43 6f 6c 75 6d 6e 4e 61  generateColumnNa
0570: 6d 65 73 28 70 50 61 72 73 65 2c 20 70 54 61 62  mes(pParse, pTab
0580: 4c 69 73 74 2c 20 70 45 4c 69 73 74 29 3b 20 20  List, pEList);  
0590: 2f 2a 2a 2a 20 41 44 44 45 44 20 2d 20 53 51 4c  /*** ADDED - SQL
05a0: 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f  ite.Interop ***/
05b0: 0a 20 20 20 20 72 65 74 75 72 6e 3b 20 20 20 20  .    return;    
05c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
05e0: 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44        /*** ADDED
05f0: 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f   - SQLite.Intero
0600: 70 20 2a 2a 2a 2f 0a 20 20 7d 20 20 20 20 20 20  p ***/.  }      
0610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0630: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a              /***
0640: 20 41 44 44 45 44 20 2d 20 53 51 4c 69 74 65 2e   ADDED - SQLite.
0650: 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 0a 23 69  Interop ***/..#i
0660: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49  fndef SQLITE_OMI
0670: 54 5f 45 58 50 4c 41 49 4e 0a 20 20 2f 2a 20 49  T_EXPLAIN.  /* I
0680: 66 20 74 68 69 73 20 69 73 20 61 6e 20 45 58 50  f this is an EXP
0690: 4c 41 49 4e 2c 20 73 6b 69 70 20 74 68 69 73 20  LAIN, skip this 
06a0: 73 74 65 70 20 2a 2f 0a 20 20 69 66 28 20 70 50  step */.  if( pP
06b0: 61 72 73 65 2d 3e 65 78 70 6c 61 69 6e 20 29 7b  arse->explain ){
06c0: 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 7d  .    return;.  }
06d0: 0a 23 65 6e 64 69 66 0a 0a 20 20 61 73 73 65 72  .#endif..  asser
06e0: 74 28 20 76 21 3d 30 20 29 3b 0a 20 20 69 66 28  t( v!=0 );.  if(
06f0: 20 70 50 61 72 73 65 2d 3e 63 6f 6c 4e 61 6d 65   pParse->colName
0700: 73 53 65 74 20 7c 7c 20 76 3d 3d 30 20 7c 7c 20  sSet || v==0 || 
0710: 73 71 6c 69 74 65 33 54 68 72 65 61 64 44 61 74  sqlite3ThreadDat
0720: 61 28 29 2d 3e 6d 61 6c 6c 6f 63 46 61 69 6c 65  a()->mallocFaile
0730: 64 20 29 20 72 65 74 75 72 6e 3b 0a 20 20 70 50  d ) return;.  pP
0740: 61 72 73 65 2d 3e 63 6f 6c 4e 61 6d 65 73 53 65  arse->colNamesSe
0750: 74 20 3d 20 31 3b 0a 20 20 66 75 6c 6c 4e 61 6d  t = 1;.  fullNam
0760: 65 73 20 3d 20 28 64 62 2d 3e 66 6c 61 67 73 20  es = (db->flags 
0770: 26 20 53 51 4c 49 54 45 5f 46 75 6c 6c 43 6f 6c  & SQLITE_FullCol
0780: 4e 61 6d 65 73 29 21 3d 30 3b 0a 20 20 73 68 6f  Names)!=0;.  sho
0790: 72 74 4e 61 6d 65 73 20 3d 20 28 64 62 2d 3e 66  rtNames = (db->f
07a0: 6c 61 67 73 20 26 20 53 51 4c 49 54 45 5f 53 68  lags & SQLITE_Sh
07b0: 6f 72 74 43 6f 6c 4e 61 6d 65 73 29 21 3d 30 3b  ortColNames)!=0;
07c0: 0a 20 20 69 66 20 28 72 65 61 6c 4e 61 6d 65 73  .  if (realNames
07d0: 29 20 66 75 6c 6c 4e 61 6d 65 73 20 3d 20 31 3b  ) fullNames = 1;
07e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07f0: 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44        /*** ADDED
0800: 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f   - SQLite.Intero
0810: 70 20 2a 2a 2a 2f 0a 0a 20 20 73 71 6c 69 74 65  p ***/..  sqlite
0820: 33 56 64 62 65 53 65 74 4e 75 6d 43 6f 6c 73 28  3VdbeSetNumCols(
0830: 76 2c 20 70 45 4c 69 73 74 2d 3e 6e 45 78 70 72  v, pEList->nExpr
0840: 29 3b 0a 20 20 66 6f 72 28 69 3d 30 3b 20 69 3c  );.  for(i=0; i<
0850: 70 45 4c 69 73 74 2d 3e 6e 45 78 70 72 3b 20 69  pEList->nExpr; i
0860: 2b 2b 29 7b 0a 20 20 20 20 45 78 70 72 20 2a 70  ++){.    Expr *p
0870: 3b 0a 20 20 20 20 70 20 3d 20 70 45 4c 69 73 74  ;.    p = pEList
0880: 2d 3e 61 5b 69 5d 2e 70 45 78 70 72 3b 0a 20 20  ->a[i].pExpr;.  
0890: 20 20 69 66 28 20 70 3d 3d 30 20 29 20 63 6f 6e    if( p==0 ) con
08a0: 74 69 6e 75 65 3b 0a 20 20 20 20 69 66 28 20 70  tinue;.    if( p
08b0: 45 4c 69 73 74 2d 3e 61 5b 69 5d 2e 7a 4e 61 6d  EList->a[i].zNam
08c0: 65 20 26 26 20 28 72 65 61 6c 4e 61 6d 65 73 20  e && (realNames 
08d0: 3d 3d 20 30 20 7c 7c 20 70 2d 3e 6f 70 20 21 3d  == 0 || p->op !=
08e0: 20 54 4b 5f 43 4f 4c 55 4d 4e 29 29 7b 20 20 20   TK_COLUMN)){   
08f0: 2f 2a 2a 2a 20 43 48 41 4e 47 45 44 20 2d 20 53  /*** CHANGED - S
0900: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a 2a  QLite.Interop **
0910: 2a 2f 0a 20 20 20 20 20 20 63 68 61 72 20 2a 7a  */.      char *z
0920: 4e 61 6d 65 20 3d 20 70 45 4c 69 73 74 2d 3e 61  Name = pEList->a
0930: 5b 69 5d 2e 7a 4e 61 6d 65 3b 0a 20 20 20 20 20  [i].zName;.     
0940: 20 73 71 6c 69 74 65 33 56 64 62 65 53 65 74 43   sqlite3VdbeSetC
0950: 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 7a 4e 61  olName(v, i, zNa
0960: 6d 65 2c 20 73 74 72 6c 65 6e 28 7a 4e 61 6d 65  me, strlen(zName
0970: 29 29 3b 0a 20 20 20 20 20 20 63 6f 6e 74 69 6e  ));.      contin
0980: 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  ue;.    }.    if
0990: 28 20 70 2d 3e 6f 70 3d 3d 54 4b 5f 43 4f 4c 55  ( p->op==TK_COLU
09a0: 4d 4e 20 26 26 20 70 54 61 62 4c 69 73 74 20 29  MN && pTabList )
09b0: 7b 0a 20 20 20 20 20 20 54 61 62 6c 65 20 2a 70  {.      Table *p
09c0: 54 61 62 3b 0a 20 20 20 20 20 20 63 68 61 72 20  Tab;.      char 
09d0: 2a 7a 43 6f 6c 3b 0a 20 20 20 20 20 20 69 6e 74  *zCol;.      int
09e0: 20 69 43 6f 6c 20 3d 20 70 2d 3e 69 43 6f 6c 75   iCol = p->iColu
09f0: 6d 6e 3b 0a 20 20 20 20 20 20 66 6f 72 28 6a 3d  mn;.      for(j=
0a00: 30 3b 20 6a 3c 70 54 61 62 4c 69 73 74 2d 3e 6e  0; j<pTabList->n
0a10: 53 72 63 20 26 26 20 70 54 61 62 4c 69 73 74 2d  Src && pTabList-
0a20: 3e 61 5b 6a 5d 2e 69 43 75 72 73 6f 72 21 3d 70  >a[j].iCursor!=p
0a30: 2d 3e 69 54 61 62 6c 65 3b 20 6a 2b 2b 29 7b 7d  ->iTable; j++){}
0a40: 0a 20 20 20 20 20 20 61 73 73 65 72 74 28 20 6a  .      assert( j
0a50: 3c 70 54 61 62 4c 69 73 74 2d 3e 6e 53 72 63 20  <pTabList->nSrc 
0a60: 29 3b 0a 20 20 20 20 20 20 70 54 61 62 20 3d 20  );.      pTab = 
0a70: 70 54 61 62 4c 69 73 74 2d 3e 61 5b 6a 5d 2e 70  pTabList->a[j].p
0a80: 54 61 62 3b 0a 20 20 20 20 20 20 69 66 28 20 69  Tab;.      if( i
0a90: 43 6f 6c 3c 30 20 29 20 69 43 6f 6c 20 3d 20 70  Col<0 ) iCol = p
0aa0: 54 61 62 2d 3e 69 50 4b 65 79 3b 0a 20 20 20 20  Tab->iPKey;.    
0ab0: 20 20 61 73 73 65 72 74 28 20 69 43 6f 6c 3d 3d    assert( iCol==
0ac0: 2d 31 20 7c 7c 20 28 69 43 6f 6c 3e 3d 30 20 26  -1 || (iCol>=0 &
0ad0: 26 20 69 43 6f 6c 3c 70 54 61 62 2d 3e 6e 43 6f  & iCol<pTab->nCo
0ae0: 6c 29 20 29 3b 0a 20 20 20 20 20 20 69 66 28 20  l) );.      if( 
0af0: 69 43 6f 6c 3c 30 20 29 7b 0a 20 20 20 20 20 20  iCol<0 ){.      
0b00: 20 20 7a 43 6f 6c 20 3d 20 22 72 6f 77 69 64 22    zCol = "rowid"
0b10: 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20  ;.      }else{. 
0b20: 20 20 20 20 20 20 20 7a 43 6f 6c 20 3d 20 70 54         zCol = pT
0b30: 61 62 2d 3e 61 43 6f 6c 5b 69 43 6f 6c 5d 2e 7a  ab->aCol[iCol].z
0b40: 4e 61 6d 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20  Name;.      }.  
0b50: 20 20 20 20 69 66 28 20 21 73 68 6f 72 74 4e 61      if( !shortNa
0b60: 6d 65 73 20 26 26 20 21 66 75 6c 6c 4e 61 6d 65  mes && !fullName
0b70: 73 20 26 26 20 70 2d 3e 73 70 61 6e 2e 7a 20 26  s && p->span.z &
0b80: 26 20 70 2d 3e 73 70 61 6e 2e 7a 5b 30 5d 20 29  & p->span.z[0] )
0b90: 7b 0a 20 20 20 20 20 20 20 20 73 71 6c 69 74 65  {.        sqlite
0ba0: 33 56 64 62 65 53 65 74 43 6f 6c 4e 61 6d 65 28  3VdbeSetColName(
0bb0: 76 2c 20 69 2c 20 28 63 68 61 72 2a 29 70 2d 3e  v, i, (char*)p->
0bc0: 73 70 61 6e 2e 7a 2c 20 70 2d 3e 73 70 61 6e 2e  span.z, p->span.
0bd0: 6e 29 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 20  n);.      }else 
0be0: 69 66 28 20 66 75 6c 6c 4e 61 6d 65 73 20 7c 7c  if( fullNames ||
0bf0: 20 28 21 73 68 6f 72 74 4e 61 6d 65 73 20 26 26   (!shortNames &&
0c00: 20 70 54 61 62 4c 69 73 74 2d 3e 6e 53 72 63 3e   pTabList->nSrc>
0c10: 31 29 20 29 7b 0a 20 20 20 20 20 20 20 20 63 68  1) ){.        ch
0c20: 61 72 20 2a 7a 4e 61 6d 65 20 3d 20 30 3b 0a 20  ar *zName = 0;. 
0c30: 20 20 20 20 20 20 20 63 68 61 72 20 2a 7a 54 61         char *zTa
0c40: 62 3b 0a 20 20 20 20 20 20 20 20 63 68 61 72 20  b;.        char 
0c50: 2a 7a 44 62 20 3d 20 30 3b 20 20 20 20 20 20 20  *zDb = 0;       
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c90: 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20 2d 20     /*** ADDED - 
0ca0: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a  SQLite.Interop *
0cb0: 2a 2a 2f 0a 20 20 20 20 20 20 20 20 69 6e 74 20  **/.        int 
0cc0: 69 44 62 3b 0a 0a 20 20 20 20 20 20 20 20 69 44  iDb;..        iD
0cd0: 62 20 3d 20 73 71 6c 69 74 65 33 53 63 68 65 6d  b = sqlite3Schem
0ce0: 61 54 6f 49 6e 64 65 78 28 70 50 61 72 73 65 2d  aToIndex(pParse-
0cf0: 3e 64 62 2c 20 70 54 61 62 2d 3e 70 53 63 68 65  >db, pTab->pSche
0d00: 6d 61 29 3b 0a 0a 20 20 20 20 20 20 20 20 7a 54  ma);..        zT
0d10: 61 62 20 3d 20 70 54 61 62 4c 69 73 74 2d 3e 61  ab = pTabList->a
0d20: 5b 6a 5d 2e 7a 41 6c 69 61 73 3b 0a 20 20 20 20  [j].zAlias;.    
0d30: 20 20 20 20 69 66 28 20 66 75 6c 6c 4e 61 6d 65      if( fullName
0d40: 73 20 7c 7c 20 7a 54 61 62 3d 3d 30 20 29 7b 0a  s || zTab==0 ){.
0d50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 44            if (iD
0d60: 62 20 3e 20 31 29 20 7a 44 62 20 3d 20 64 62 2d  b > 1) zDb = db-
0d70: 3e 61 44 62 5b 69 44 62 5d 2e 7a 4e 61 6d 65 3b  >aDb[iDb].zName;
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20 2d      /*** ADDED -
0da0: 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20   SQLite.Interop 
0db0: 2a 2a 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 7a  ***/.          z
0dc0: 54 61 62 20 3d 20 70 54 61 62 2d 3e 7a 4e 61 6d  Tab = pTab->zNam
0dd0: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  e;.        }.   
0de0: 20 20 20 20 20 69 66 20 28 21 7a 44 62 20 7c 7c       if (!zDb ||
0df0: 20 21 72 65 61 6c 4e 61 6d 65 73 29 20 73 71 6c   !realNames) sql
0e00: 69 74 65 33 53 65 74 53 74 72 69 6e 67 28 26 7a  ite3SetString(&z
0e10: 4e 61 6d 65 2c 20 7a 54 61 62 2c 20 22 5c 78 30  Name, zTab, "\x0
0e20: 31 22 2c 20 7a 43 6f 6c 2c 20 30 29 3b 20 20 20  1", zCol, 0);   
0e30: 2f 2a 2a 2a 20 43 48 41 4e 47 45 44 20 2d 20 53  /*** CHANGED - S
0e40: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a 2a  QLite.Interop **
0e50: 2a 2f 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20  */.        else 
0e60: 73 71 6c 69 74 65 33 53 65 74 53 74 72 69 6e 67  sqlite3SetString
0e70: 28 26 7a 4e 61 6d 65 2c 20 7a 44 62 2c 20 22 5c  (&zName, zDb, "\
0e80: 78 30 31 22 2c 20 7a 54 61 62 2c 20 22 5c 78 30  x01", zTab, "\x0
0e90: 31 22 2c 20 7a 43 6f 6c 2c 20 30 29 3b 20 20 20  1", zCol, 0);   
0ea0: 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44           /*** AD
0eb0: 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74  DED - SQLite.Int
0ec0: 65 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20 20  erop ***/.      
0ed0: 20 20 73 71 6c 69 74 65 33 56 64 62 65 53 65 74    sqlite3VdbeSet
0ee0: 43 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 7a 4e  ColName(v, i, zN
0ef0: 61 6d 65 2c 20 50 33 5f 44 59 4e 41 4d 49 43 29  ame, P3_DYNAMIC)
0f00: 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20  ;.      }else{. 
0f10: 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 56 64         sqlite3Vd
0f20: 62 65 53 65 74 43 6f 6c 4e 61 6d 65 28 76 2c 20  beSetColName(v, 
0f30: 69 2c 20 7a 43 6f 6c 2c 20 73 74 72 6c 65 6e 28  i, zCol, strlen(
0f40: 7a 43 6f 6c 29 29 3b 0a 20 20 20 20 20 20 7d 0a  zCol));.      }.
0f50: 20 20 20 20 7d 65 6c 73 65 20 69 66 28 20 70 2d      }else if( p-
0f60: 3e 73 70 61 6e 2e 7a 20 26 26 20 70 2d 3e 73 70  >span.z && p->sp
0f70: 61 6e 2e 7a 5b 30 5d 20 29 7b 0a 20 20 20 20 20  an.z[0] ){.     
0f80: 20 73 71 6c 69 74 65 33 56 64 62 65 53 65 74 43   sqlite3VdbeSetC
0f90: 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 28 63 68  olName(v, i, (ch
0fa0: 61 72 2a 29 70 2d 3e 73 70 61 6e 2e 7a 2c 20 70  ar*)p->span.z, p
0fb0: 2d 3e 73 70 61 6e 2e 6e 29 3b 0a 20 20 20 20 20  ->span.n);.     
0fc0: 20 2f 2a 20 73 71 6c 69 74 65 33 56 64 62 65 43   /* sqlite3VdbeC
0fd0: 6f 6d 70 72 65 73 73 53 70 61 63 65 28 76 2c 20  ompressSpace(v, 
0fe0: 61 64 64 72 29 3b 20 2a 2f 0a 20 20 20 20 7d 65  addr); */.    }e
0ff0: 6c 73 65 7b 0a 20 20 20 20 20 20 63 68 61 72 20  lse{.      char 
1000: 7a 4e 61 6d 65 5b 33 30 5d 3b 0a 20 20 20 20 20  zName[30];.     
1010: 20 61 73 73 65 72 74 28 20 70 2d 3e 6f 70 21 3d   assert( p->op!=
1020: 54 4b 5f 43 4f 4c 55 4d 4e 20 7c 7c 20 70 54 61  TK_COLUMN || pTa
1030: 62 4c 69 73 74 3d 3d 30 20 29 3b 0a 20 20 20 20  bList==0 );.    
1040: 20 20 73 70 72 69 6e 74 66 28 7a 4e 61 6d 65 2c    sprintf(zName,
1050: 20 22 63 6f 6c 75 6d 6e 25 64 22 2c 20 69 2b 31   "column%d", i+1
1060: 29 3b 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33  );.      sqlite3
1070: 56 64 62 65 53 65 74 43 6f 6c 4e 61 6d 65 28 76  VdbeSetColName(v
1080: 2c 20 69 2c 20 7a 4e 61 6d 65 2c 20 30 29 3b 0a  , i, zName, 0);.
1090: 20 20 20 20 7d 0a 20 20 7d 0a 20 20 67 65 6e 65      }.  }.  gene
10a0: 72 61 74 65 43 6f 6c 75 6d 6e 54 79 70 65 73 28  rateColumnTypes(
10b0: 70 50 61 72 73 65 2c 20 70 54 61 62 4c 69 73 74  pParse, pTabList
10c0: 2c 20 70 45 4c 69 73 74 29 3b 0a 7d 0a 0a 23 69  , pEList);.}..#i
10d0: 66 64 65 66 20 4f 53 5f 57 49 4e 0a 0a 23 69 6e  fdef OS_WIN..#in
10e0: 63 6c 75 64 65 20 3c 74 63 68 61 72 2e 68 3e 0a  clude <tchar.h>.
10f0: 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 5f  .typedef void (_
1100: 5f 73 74 64 63 61 6c 6c 20 2a 53 51 4c 49 54 45  _stdcall *SQLITE
1110: 55 53 45 52 46 55 4e 43 29 28 76 6f 69 64 20 2a  USERFUNC)(void *
1120: 2c 20 69 6e 74 2c 20 76 6f 69 64 20 2a 2a 29 3b  , int, void **);
1130: 0a 74 79 70 65 64 65 66 20 69 6e 74 20 20 28 5f  .typedef int  (_
1140: 5f 73 74 64 63 61 6c 6c 20 2a 53 51 4c 49 54 45  _stdcall *SQLITE
1150: 43 4f 4c 4c 41 54 49 4f 4e 29 28 69 6e 74 2c 20  COLLATION)(int, 
1160: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2c 20 69 6e  const void *, in
1170: 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 29 3b  t, const void*);
1180: 0a 0a 74 79 70 65 64 65 66 20 69 6e 74 20 28 5f  ..typedef int (_
1190: 5f 73 74 64 63 61 6c 6c 20 2a 45 4e 43 52 59 50  _stdcall *ENCRYP
11a0: 54 46 49 4c 45 57 29 28 63 6f 6e 73 74 20 77 63  TFILEW)(const wc
11b0: 68 61 72 5f 74 20 2a 29 3b 0a 74 79 70 65 64 65  har_t *);.typede
11c0: 66 20 69 6e 74 20 28 5f 5f 73 74 64 63 61 6c 6c  f int (__stdcall
11d0: 20 2a 45 4e 43 52 59 50 54 45 44 53 54 41 54 55   *ENCRYPTEDSTATU
11e0: 53 57 29 28 63 6f 6e 73 74 20 77 63 68 61 72 5f  SW)(const wchar_
11f0: 74 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f  t *, unsigned lo
1200: 6e 67 20 2a 29 3b 0a 74 79 70 65 64 65 66 20 69  ng *);.typedef i
1210: 6e 74 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a 44  nt (__stdcall *D
1220: 45 43 52 59 50 54 46 49 4c 45 57 29 28 63 6f 6e  ECRYPTFILEW)(con
1230: 73 74 20 77 63 68 61 72 5f 74 20 2a 2c 20 75 6e  st wchar_t *, un
1240: 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a 0a 74  signed long);..t
1250: 79 70 65 64 65 66 20 48 41 4e 44 4c 45 20 28 5f  ypedef HANDLE (_
1260: 5f 73 74 64 63 61 6c 6c 20 2a 43 52 45 41 54 45  _stdcall *CREATE
1270: 46 49 4c 45 57 29 28 0a 20 20 20 20 4c 50 43 57  FILEW)(.    LPCW
1280: 53 54 52 2c 0a 20 20 20 20 44 57 4f 52 44 2c 0a  STR,.    DWORD,.
1290: 20 20 20 20 44 57 4f 52 44 2c 0a 20 20 20 20 4c      DWORD,.    L
12a0: 50 53 45 43 55 52 49 54 59 5f 41 54 54 52 49 42  PSECURITY_ATTRIB
12b0: 55 54 45 53 2c 0a 20 20 20 20 44 57 4f 52 44 2c  UTES,.    DWORD,
12c0: 0a 20 20 20 20 44 57 4f 52 44 2c 0a 20 20 20 20  .    DWORD,.    
12d0: 48 41 4e 44 4c 45 29 3b 0a 0a 2f 2f 20 43 61 6c  HANDLE);..// Cal
12e0: 6c 62 61 63 6b 20 77 72 61 70 70 65 72 73 0a 69  lback wrappers.i
12f0: 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  nt sqlite3_inter
1300: 6f 70 5f 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63  op_collationfunc
1310: 28 76 6f 69 64 20 2a 70 76 2c 20 69 6e 74 20 6c  (void *pv, int l
1320: 65 6e 31 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20  en1, const void 
1330: 2a 70 76 31 2c 20 69 6e 74 20 6c 65 6e 32 2c 20  *pv1, int len2, 
1340: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 32 29  const void *pv2)
1350: 0a 7b 0a 20 20 53 51 4c 49 54 45 43 4f 4c 4c 41  .{.  SQLITECOLLA
1360: 54 49 4f 4e 20 2a 70 20 3d 20 28 53 51 4c 49 54  TION *p = (SQLIT
1370: 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 29 70 76 3b  ECOLLATION *)pv;
1380: 0a 20 20 72 65 74 75 72 6e 20 70 5b 30 5d 28 6c  .  return p[0](l
1390: 65 6e 31 2c 20 70 76 31 2c 20 6c 65 6e 32 2c 20  en1, pv1, len2, 
13a0: 70 76 32 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73 71  pv2);.}..void sq
13b0: 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66 75  lite3_interop_fu
13c0: 6e 63 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  nc(sqlite3_conte
13d0: 78 74 20 2a 70 63 74 78 2c 20 69 6e 74 20 6e 2c  xt *pctx, int n,
13e0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a   sqlite3_value *
13f0: 2a 70 76 29 0a 7b 0a 20 20 53 51 4c 49 54 45 55  *pv).{.  SQLITEU
1400: 53 45 52 46 55 4e 43 20 2a 70 66 20 3d 20 28 53  SERFUNC *pf = (S
1410: 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a 29  QLITEUSERFUNC *)
1420: 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74  sqlite3_user_dat
1430: 61 28 70 63 74 78 29 3b 0a 20 20 70 66 5b 30 5d  a(pctx);.  pf[0]
1440: 28 70 63 74 78 2c 20 6e 2c 20 28 76 6f 69 64 20  (pctx, n, (void 
1450: 2a 2a 29 70 76 29 3b 0a 7d 0a 0a 76 6f 69 64 20  **)pv);.}..void 
1460: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
1470: 73 74 65 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e  step(sqlite3_con
1480: 74 65 78 74 20 2a 70 63 74 78 2c 20 69 6e 74 20  text *pctx, int 
1490: 6e 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  n, sqlite3_value
14a0: 20 2a 2a 70 76 29 0a 7b 0a 20 20 53 51 4c 49 54   **pv).{.  SQLIT
14b0: 45 55 53 45 52 46 55 4e 43 20 2a 70 66 20 3d 20  EUSERFUNC *pf = 
14c0: 28 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20  (SQLITEUSERFUNC 
14d0: 2a 29 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64  *)sqlite3_user_d
14e0: 61 74 61 28 70 63 74 78 29 3b 0a 20 20 70 66 5b  ata(pctx);.  pf[
14f0: 31 5d 28 70 63 74 78 2c 20 6e 2c 20 28 76 6f 69  1](pctx, n, (voi
1500: 64 20 2a 2a 29 70 76 29 3b 0a 7d 0a 0a 76 6f 69  d **)pv);.}..voi
1510: 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f  d sqlite3_intero
1520: 70 5f 66 69 6e 61 6c 28 73 71 6c 69 74 65 33 5f  p_final(sqlite3_
1530: 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 29 0a 7b  context *pctx).{
1540: 0a 20 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e  .  SQLITEUSERFUN
1550: 43 20 2a 70 66 20 3d 20 28 53 51 4c 49 54 45 55  C *pf = (SQLITEU
1560: 53 45 52 46 55 4e 43 20 2a 29 73 71 6c 69 74 65  SERFUNC *)sqlite
1570: 33 5f 75 73 65 72 5f 64 61 74 61 28 70 63 74 78  3_user_data(pctx
1580: 29 3b 0a 20 20 70 66 5b 32 5d 28 70 63 74 78 2c  );.  pf[2](pctx,
1590: 20 30 2c 20 30 29 3b 0a 7d 0a 0a 5f 5f 64 65 63   0, 0);.}..__dec
15a0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
15b0: 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20   void __stdcall 
15c0: 73 71 6c 69 74 65 33 5f 73 6c 65 65 70 5f 69 6e  sqlite3_sleep_in
15d0: 74 65 72 6f 70 28 69 6e 74 20 6d 69 6c 6c 69 73  terop(int millis
15e0: 65 63 6f 6e 64 73 29 0a 7b 0a 20 20 53 6c 65 65  econds).{.  Slee
15f0: 70 28 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 29 3b  p(milliseconds);
1600: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
1610: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 73 71  llexport) int sq
1620: 6c 69 74 65 33 5f 65 6e 63 72 79 70 74 66 69 6c  lite3_encryptfil
1630: 65 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20  e(const wchar_t 
1640: 2a 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a 7b  *pwszFilename).{
1650: 0a 20 20 48 4d 4f 44 55 4c 45 20 68 4d 6f 64 20  .  HMODULE hMod 
1660: 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 5f 54  = LoadLibrary(_T
1670: 28 22 41 44 56 41 50 49 33 32 22 29 29 3b 0a 20  ("ADVAPI32"));. 
1680: 20 45 4e 43 52 59 50 54 46 49 4c 45 57 20 70 66   ENCRYPTFILEW pf
1690: 75 6e 63 3b 0a 20 20 69 6e 74 20 6e 3b 0a 0a 20  unc;.  int n;.. 
16a0: 20 69 66 20 28 68 4d 6f 64 20 3d 3d 20 4e 55 4c   if (hMod == NUL
16b0: 4c 29 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c 61  L).  {.    SetLa
16c0: 73 74 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e 4f  stError(ERROR_NO
16d0: 54 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a 20 20  T_SUPPORTED);.  
16e0: 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d 0a    return 0;.  }.
16f0: 20 20 0a 20 20 70 66 75 6e 63 20 3d 20 28 45 4e    .  pfunc = (EN
1700: 43 52 59 50 54 46 49 4c 45 57 29 47 65 74 50 72  CRYPTFILEW)GetPr
1710: 6f 63 41 64 64 72 65 73 73 28 68 4d 6f 64 2c 20  ocAddress(hMod, 
1720: 5f 54 28 22 45 6e 63 72 79 70 74 46 69 6c 65 57  _T("EncryptFileW
1730: 22 29 29 3b 0a 20 20 69 66 20 28 70 66 75 6e 63  "));.  if (pfunc
1740: 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20   == NULL).  {.  
1750: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45    SetLastError(E
1760: 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54  RROR_NOT_SUPPORT
1770: 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  ED);.    return 
1780: 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20 3d 20 70 66  0;.  }..  n = pf
1790: 75 6e 63 28 70 77 73 7a 46 69 6c 65 6e 61 6d 65  unc(pwszFilename
17a0: 29 3b 0a 0a 20 20 46 72 65 65 4c 69 62 72 61 72  );..  FreeLibrar
17b0: 79 28 68 4d 6f 64 29 3b 0a 0a 20 20 72 65 74 75  y(hMod);..  retu
17c0: 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  rn n;.}..__decls
17d0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
17e0: 6e 74 20 73 71 6c 69 74 65 33 5f 64 65 63 72 79  nt sqlite3_decry
17f0: 70 74 66 69 6c 65 28 63 6f 6e 73 74 20 77 63 68  ptfile(const wch
1800: 61 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e 61  ar_t *pwszFilena
1810: 6d 65 29 0a 7b 0a 20 20 48 4d 4f 44 55 4c 45 20  me).{.  HMODULE 
1820: 68 4d 6f 64 20 3d 20 4c 6f 61 64 4c 69 62 72 61  hMod = LoadLibra
1830: 72 79 28 5f 54 28 22 41 44 56 41 50 49 33 32 22  ry(_T("ADVAPI32"
1840: 29 29 3b 0a 20 20 44 45 43 52 59 50 54 46 49 4c  ));.  DECRYPTFIL
1850: 45 57 20 70 66 75 6e 63 3b 0a 20 20 69 6e 74 20  EW pfunc;.  int 
1860: 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f 64 20 3d  n;..  if (hMod =
1870: 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20 20 20  = NULL).  {.    
1880: 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45 52 52  SetLastError(ERR
1890: 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44  OR_NOT_SUPPORTED
18a0: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 30 3b  );.    return 0;
18b0: 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63 20 3d 20  .  }..  pfunc = 
18c0: 28 44 45 43 52 59 50 54 46 49 4c 45 57 29 47 65  (DECRYPTFILEW)Ge
18d0: 74 50 72 6f 63 41 64 64 72 65 73 73 28 68 4d 6f  tProcAddress(hMo
18e0: 64 2c 20 5f 54 28 22 44 65 63 72 79 70 74 46 69  d, _T("DecryptFi
18f0: 6c 65 57 22 29 29 3b 0a 20 20 69 66 20 28 70 66  leW"));.  if (pf
1900: 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b  unc == NULL).  {
1910: 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f  .    SetLastErro
1920: 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50  r(ERROR_NOT_SUPP
1930: 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75  ORTED);.    retu
1940: 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20 3d  rn 0;.  }..  n =
1950: 20 70 66 75 6e 63 28 70 77 73 7a 46 69 6c 65 6e   pfunc(pwszFilen
1960: 61 6d 65 2c 20 30 29 3b 0a 0a 20 20 46 72 65 65  ame, 0);..  Free
1970: 4c 69 62 72 61 72 79 28 68 4d 6f 64 29 3b 0a 0a  Library(hMod);..
1980: 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f    return n;.}.._
1990: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
19a0: 6f 72 74 29 20 75 6e 73 69 67 6e 65 64 20 6c 6f  ort) unsigned lo
19b0: 6e 67 20 73 71 6c 69 74 65 33 5f 65 6e 63 72 79  ng sqlite3_encry
19c0: 70 74 65 64 73 74 61 74 75 73 28 63 6f 6e 73 74  ptedstatus(const
19d0: 20 77 63 68 61 72 5f 74 20 2a 70 77 73 7a 46 69   wchar_t *pwszFi
19e0: 6c 65 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64  lename, unsigned
19f0: 20 6c 6f 6e 67 20 2a 70 64 77 53 74 61 74 75 73   long *pdwStatus
1a00: 29 0a 7b 0a 20 20 48 4d 4f 44 55 4c 45 20 68 4d  ).{.  HMODULE hM
1a10: 6f 64 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79  od = LoadLibrary
1a20: 28 5f 54 28 22 41 44 56 41 50 49 33 32 22 29 29  (_T("ADVAPI32"))
1a30: 3b 0a 20 20 45 4e 43 52 59 50 54 45 44 53 54 41  ;.  ENCRYPTEDSTA
1a40: 54 55 53 57 20 70 66 75 6e 63 3b 0a 20 20 69 6e  TUSW pfunc;.  in
1a50: 74 20 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f 64  t n;..  if (hMod
1a60: 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20   == NULL).  {.  
1a70: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45    SetLastError(E
1a80: 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54  RROR_NOT_SUPPORT
1a90: 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  ED);.    return 
1aa0: 30 3b 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63 20  0;.  }..  pfunc 
1ab0: 3d 20 28 45 4e 43 52 59 50 54 45 44 53 54 41 54  = (ENCRYPTEDSTAT
1ac0: 55 53 57 29 47 65 74 50 72 6f 63 41 64 64 72 65  USW)GetProcAddre
1ad0: 73 73 28 68 4d 6f 64 2c 20 5f 54 28 22 46 69 6c  ss(hMod, _T("Fil
1ae0: 65 45 6e 63 72 79 70 74 69 6f 6e 53 74 61 74 75  eEncryptionStatu
1af0: 73 57 22 29 29 3b 0a 20 20 69 66 20 28 70 66 75  sW"));.  if (pfu
1b00: 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a  nc == NULL).  {.
1b10: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
1b20: 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f  (ERROR_NOT_SUPPO
1b30: 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72  RTED);.    retur
1b40: 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20 3d 20  n 0;.  }..  n = 
1b50: 70 66 75 6e 63 28 70 77 73 7a 46 69 6c 65 6e 61  pfunc(pwszFilena
1b60: 6d 65 2c 20 70 64 77 53 74 61 74 75 73 29 3b 0a  me, pdwStatus);.
1b70: 0a 20 20 46 72 65 65 4c 69 62 72 61 72 79 28 68  .  FreeLibrary(h
1b80: 4d 6f 64 29 3b 0a 0a 20 20 72 65 74 75 72 6e 20  Mod);..  return 
1b90: 6e 3b 0a 7d 0a 0a 69 6e 74 20 53 65 74 43 6f 6d  n;.}..int SetCom
1ba0: 70 72 65 73 73 69 6f 6e 28 63 6f 6e 73 74 20 77  pression(const w
1bb0: 63 68 61 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65  char_t *pwszFile
1bc0: 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 73  name, unsigned s
1bd0: 68 6f 72 74 20 75 66 4c 65 76 65 6c 29 0a 7b 0a  hort ufLevel).{.
1be0: 23 69 66 64 65 66 20 46 53 43 54 4c 5f 53 45 54  #ifdef FSCTL_SET
1bf0: 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 0a 20 20 48  _COMPRESSION.  H
1c00: 4d 4f 44 55 4c 45 20 68 4d 6f 64 20 3d 20 47 65  MODULE hMod = Ge
1c10: 74 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 28 5f 54  tModuleHandle(_T
1c20: 28 22 4b 45 52 4e 45 4c 33 32 22 29 29 3b 0a 20  ("KERNEL32"));. 
1c30: 20 43 52 45 41 54 45 46 49 4c 45 57 20 70 66 75   CREATEFILEW pfu
1c40: 6e 63 3b 0a 20 20 48 41 4e 44 4c 45 20 68 46 69  nc;.  HANDLE hFi
1c50: 6c 65 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20 6c  le;.  unsigned l
1c60: 6f 6e 67 20 64 77 20 3d 20 30 3b 0a 20 20 69 6e  ong dw = 0;.  in
1c70: 74 20 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f 64  t n;..  if (hMod
1c80: 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20   == NULL).  {.  
1c90: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45    SetLastError(E
1ca0: 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54  RROR_NOT_SUPPORT
1cb0: 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  ED);.    return 
1cc0: 30 3b 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63 20  0;.  }..  pfunc 
1cd0: 3d 20 28 43 52 45 41 54 45 46 49 4c 45 57 29 47  = (CREATEFILEW)G
1ce0: 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 68 4d  etProcAddress(hM
1cf0: 6f 64 2c 20 5f 54 28 22 43 72 65 61 74 65 46 69  od, _T("CreateFi
1d00: 6c 65 57 22 29 29 3b 0a 20 20 69 66 20 28 70 66  leW"));.  if (pf
1d10: 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b  unc == NULL).  {
1d20: 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f  .    SetLastErro
1d30: 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50  r(ERROR_NOT_SUPP
1d40: 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75  ORTED);.    retu
1d50: 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 68 46 69  rn 0;.  }..  hFi
1d60: 6c 65 20 3d 20 70 66 75 6e 63 28 70 77 73 7a 46  le = pfunc(pwszF
1d70: 69 6c 65 6e 61 6d 65 2c 20 47 45 4e 45 52 49 43  ilename, GENERIC
1d80: 5f 52 45 41 44 7c 47 45 4e 45 52 49 43 5f 57 52  _READ|GENERIC_WR
1d90: 49 54 45 2c 20 30 2c 20 4e 55 4c 4c 2c 20 4f 50  ITE, 0, NULL, OP
1da0: 45 4e 5f 45 58 49 53 54 49 4e 47 2c 20 46 49 4c  EN_EXISTING, FIL
1db0: 45 5f 41 54 54 52 49 42 55 54 45 5f 4e 4f 52 4d  E_ATTRIBUTE_NORM
1dc0: 41 4c 2c 20 4e 55 4c 4c 29 3b 0a 20 20 69 66 20  AL, NULL);.  if 
1dd0: 28 68 46 69 6c 65 20 3d 3d 20 4e 55 4c 4c 29 0a  (hFile == NULL).
1de0: 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 0a 20      return 0;.. 
1df0: 20 6e 20 3d 20 44 65 76 69 63 65 49 6f 43 6f 6e   n = DeviceIoCon
1e00: 74 72 6f 6c 28 68 46 69 6c 65 2c 20 46 53 43 54  trol(hFile, FSCT
1e10: 4c 5f 53 45 54 5f 43 4f 4d 50 52 45 53 53 49 4f  L_SET_COMPRESSIO
1e20: 4e 2c 20 26 75 66 4c 65 76 65 6c 2c 20 73 69 7a  N, &ufLevel, siz
1e30: 65 6f 66 28 75 66 4c 65 76 65 6c 29 2c 20 4e 55  eof(ufLevel), NU
1e40: 4c 4c 2c 20 30 2c 20 26 64 77 2c 20 4e 55 4c 4c  LL, 0, &dw, NULL
1e50: 29 3b 0a 0a 20 20 43 6c 6f 73 65 48 61 6e 64 6c  );..  CloseHandl
1e60: 65 28 68 46 69 6c 65 29 3b 0a 0a 20 20 72 65 74  e(hFile);..  ret
1e70: 75 72 6e 20 6e 3b 0a 23 65 6c 73 65 0a 20 20 53  urn n;.#else.  S
1e80: 65 74 4c 61 73 74 45 72 72 6f 72 28 45 52 52 4f  etLastError(ERRO
1e90: 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44 29  R_NOT_SUPPORTED)
1ea0: 3b 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 23 65  ;.  return 0;.#e
1eb0: 6e 64 69 66 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ndif.}..__declsp
1ec0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
1ed0: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
1ee0: 74 65 33 5f 63 6f 6d 70 72 65 73 73 66 69 6c 65  te3_compressfile
1ef0: 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20 2a  (const wchar_t *
1f00: 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a 7b 0a  pwszFilename).{.
1f10: 20 20 72 65 74 75 72 6e 20 53 65 74 43 6f 6d 70    return SetComp
1f20: 72 65 73 73 69 6f 6e 28 70 77 73 7a 46 69 6c 65  ression(pwszFile
1f30: 6e 61 6d 65 2c 20 43 4f 4d 50 52 45 53 53 49 4f  name, COMPRESSIO
1f40: 4e 5f 46 4f 52 4d 41 54 5f 44 45 46 41 55 4c 54  N_FORMAT_DEFAULT
1f50: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
1f60: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
1f70: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
1f80: 33 5f 64 65 63 6f 6d 70 72 65 73 73 66 69 6c 65  3_decompressfile
1f90: 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20 2a  (const wchar_t *
1fa0: 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a 7b 0a  pwszFilename).{.
1fb0: 20 20 72 65 74 75 72 6e 20 53 65 74 43 6f 6d 70    return SetComp
1fc0: 72 65 73 73 69 6f 6e 28 70 77 73 7a 46 69 6c 65  ression(pwszFile
1fd0: 6e 61 6d 65 2c 20 43 4f 4d 50 52 45 53 53 49 4f  name, COMPRESSIO
1fe0: 4e 5f 46 4f 52 4d 41 54 5f 4e 4f 4e 45 29 3b 0a  N_FORMAT_NONE);.
1ff0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
2000: 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f  lexport) void __
2010: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2020: 66 75 6e 63 74 69 6f 6e 5f 66 72 65 65 5f 63 61  function_free_ca
2030: 6c 6c 62 61 63 6b 63 6f 6f 6b 69 65 28 76 6f 69  llbackcookie(voi
2040: 64 20 2a 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20  d *pCookie).{.  
2050: 69 66 20 28 70 43 6f 6f 6b 69 65 29 0a 20 20 20  if (pCookie).   
2060: 20 66 72 65 65 28 70 43 6f 6f 6b 69 65 29 3b 0a   free(pCookie);.
2070: 7d 0a 0a 2f 2f 20 73 71 6c 69 74 65 33 20 77 72  }..// sqlite3 wr
2080: 61 70 70 65 72 73 0a 5f 5f 64 65 63 6c 73 70 65  appers.__declspe
2090: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e  c(dllexport) con
20a0: 73 74 20 63 68 61 72 20 2a 20 5f 5f 73 74 64 63  st char * __stdc
20b0: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  all sqlite3_libv
20c0: 65 72 73 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 69  ersion_interop(i
20d0: 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f  nt *plen).{.  co
20e0: 6e 73 74 20 63 68 61 72 20 2a 76 61 6c 20 3d 20  nst char *val = 
20f0: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
2100: 6f 6e 28 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20  on();.  *plen = 
2110: 28 76 61 6c 20 21 3d 20 30 29 20 3f 20 73 74 72  (val != 0) ? str
2120: 6c 65 6e 28 76 61 6c 29 20 3a 20 30 3b 0a 0a 20  len(val) : 0;.. 
2130: 20 72 65 74 75 72 6e 20 76 61 6c 3b 0a 7d 0a 0a   return val;.}..
2140: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
2150: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
2160: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  all sqlite3_libv
2170: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 5f 69 6e  ersion_number_in
2180: 74 65 72 6f 70 28 76 6f 69 64 29 0a 7b 0a 20 20  terop(void).{.  
2190: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 6c  return sqlite3_l
21a0: 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
21b0: 28 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  ();.}..__declspe
21c0: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
21d0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
21e0: 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
21f0: 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b 0a  (sqlite3 *db).{.
2200: 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33    return sqlite3
2210: 5f 63 6c 6f 73 65 28 64 62 29 3b 0a 7d 0a 0a 5f  _close(db);.}.._
2220: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2230: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
2240: 6c 6c 20 73 71 6c 69 74 65 33 5f 65 78 65 63 5f  ll sqlite3_exec_
2250: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20  interop(sqlite3 
2260: 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  *db, const char 
2270: 2a 73 71 6c 2c 20 73 71 6c 69 74 65 33 5f 63 61  *sql, sqlite3_ca
2280: 6c 6c 62 61 63 6b 20 63 62 2c 20 76 6f 69 64 20  llback cb, void 
2290: 2a 70 76 2c 20 63 68 61 72 20 2a 2a 65 72 72 6d  *pv, char **errm
22a0: 73 67 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  sg, int *plen).{
22b0: 0a 20 20 69 6e 74 20 6e 20 3d 20 73 71 6c 69 74  .  int n = sqlit
22c0: 65 33 5f 65 78 65 63 28 64 62 2c 20 73 71 6c 2c  e3_exec(db, sql,
22d0: 20 63 62 2c 20 70 76 2c 20 65 72 72 6d 73 67 29   cb, pv, errmsg)
22e0: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 2a 65 72  ;.  *plen = (*er
22f0: 72 6d 73 67 20 21 3d 20 30 29 20 3f 20 73 74 72  rmsg != 0) ? str
2300: 6c 65 6e 28 2a 65 72 72 6d 73 67 29 20 3a 20 30  len(*errmsg) : 0
2310: 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a  ;.  return n;.}.
2320: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
2330: 78 70 6f 72 74 29 20 73 71 6c 69 74 65 5f 69 6e  xport) sqlite_in
2340: 74 36 34 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  t64 __stdcall sq
2350: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
2360: 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
2370: 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20  sqlite3 *db).{. 
2380: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
2390: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
23a0: 64 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  d(db);.}..__decl
23b0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
23c0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
23d0: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
23e0: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64  terop(sqlite3 *d
23f0: 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  b).{.  return sq
2400: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 64 62  lite3_changes(db
2410: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
2420: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
2430: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
2440: 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 5f  3_total_changes_
2450: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20  interop(sqlite3 
2460: 2a 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  *db).{.  return 
2470: 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68  sqlite3_total_ch
2480: 61 6e 67 65 73 28 64 62 29 3b 0a 7d 0a 0a 5f 5f  anges(db);.}..__
2490: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
24a0: 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61  rt) void __stdca
24b0: 6c 6c 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  ll sqlite3_inter
24c0: 72 75 70 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  rupt_interop(sql
24d0: 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20 20 73 71  ite3 *db).{.  sq
24e0: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
24f0: 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  db);.}..__declsp
2500: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
2510: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
2520: 74 65 33 5f 63 6f 6d 70 6c 65 74 65 5f 69 6e 74  te3_complete_int
2530: 65 72 6f 70 28 63 6f 6e 73 74 20 63 68 61 72 20  erop(const char 
2540: 2a 73 71 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e  *sql).{.  return
2550: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
2560: 65 28 73 71 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  e(sql);.}..__dec
2570: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
2580: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
2590: 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
25a0: 36 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20  6_interop(const 
25b0: 76 6f 69 64 20 2a 73 71 6c 29 0a 7b 0a 20 20 72  void *sql).{.  r
25c0: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f  eturn sqlite3_co
25d0: 6d 70 6c 65 74 65 31 36 28 73 71 6c 29 3b 0a 7d  mplete16(sql);.}
25e0: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
25f0: 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74  export) int __st
2600: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 75  dcall sqlite3_bu
2610: 73 79 5f 68 61 6e 64 6c 65 72 5f 69 6e 74 65 72  sy_handler_inter
2620: 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  op(sqlite3 *db, 
2630: 69 6e 74 28 2a 63 62 29 28 76 6f 69 64 20 2a 2c  int(*cb)(void *,
2640: 20 69 6e 74 29 2c 20 76 6f 69 64 20 2a 70 76 29   int), void *pv)
2650: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
2660: 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
2670: 28 64 62 2c 20 63 62 2c 20 70 76 29 3b 0a 7d 0a  (db, cb, pv);.}.
2680: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
2690: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
26a0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 75 73  call sqlite3_bus
26b0: 79 5f 74 69 6d 65 6f 75 74 5f 69 6e 74 65 72 6f  y_timeout_intero
26c0: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 69  p(sqlite3 *db, i
26d0: 6e 74 20 6d 73 29 0a 7b 0a 20 20 72 65 74 75 72  nt ms).{.  retur
26e0: 6e 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  n sqlite3_busy_t
26f0: 69 6d 65 6f 75 74 28 64 62 2c 20 6d 73 29 3b 0a  imeout(db, ms);.
2700: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
2710: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
2720: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 67  tdcall sqlite3_g
2730: 65 74 5f 74 61 62 6c 65 5f 69 6e 74 65 72 6f 70  et_table_interop
2740: 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63 6f  (sqlite3 *db, co
2750: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c 20 63  nst char *sql, c
2760: 68 61 72 20 2a 2a 2a 72 65 73 75 6c 74 70 2c 20  har ***resultp, 
2770: 69 6e 74 20 2a 6e 72 6f 77 2c 20 69 6e 74 20 2a  int *nrow, int *
2780: 6e 63 6f 6c 75 6d 6e 2c 20 63 68 61 72 20 2a 2a  ncolumn, char **
2790: 65 72 72 6d 73 67 2c 20 69 6e 74 20 2a 70 6c 65  errmsg, int *ple
27a0: 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20 73  n).{.  int n = s
27b0: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
27c0: 28 64 62 2c 20 73 71 6c 2c 20 72 65 73 75 6c 74  (db, sql, result
27d0: 70 2c 20 6e 72 6f 77 2c 20 6e 63 6f 6c 75 6d 6e  p, nrow, ncolumn
27e0: 2c 20 65 72 72 6d 73 67 29 3b 0a 20 20 2a 70 6c  , errmsg);.  *pl
27f0: 65 6e 20 3d 20 28 2a 65 72 72 6d 73 67 20 21 3d  en = (*errmsg !=
2800: 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 28 63 68   0) ? strlen((ch
2810: 61 72 20 2a 29 2a 65 72 72 6d 73 67 29 20 3a 20  ar *)*errmsg) : 
2820: 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d  0;.  return n;.}
2830: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
2840: 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73  export) void __s
2850: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 66  tdcall sqlite3_f
2860: 72 65 65 5f 74 61 62 6c 65 5f 69 6e 74 65 72 6f  ree_table_intero
2870: 70 28 63 68 61 72 20 2a 2a 72 65 73 75 6c 74 29  p(char **result)
2880: 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66 72 65  .{.  sqlite3_fre
2890: 65 5f 74 61 62 6c 65 28 72 65 73 75 6c 74 29 3b  e_table(result);
28a0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
28b0: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f  llexport) void _
28c0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
28d0: 5f 66 72 65 65 5f 69 6e 74 65 72 6f 70 28 63 68  _free_interop(ch
28e0: 61 72 20 2a 7a 29 0a 7b 0a 20 20 73 71 6c 69 74  ar *z).{.  sqlit
28f0: 65 33 5f 66 72 65 65 28 7a 29 3b 0a 7d 0a 0a 5f  e3_free(z);.}.._
2900: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2910: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
2920: 6c 6c 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  ll sqlite3_open_
2930: 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20 63 68  interop(const ch
2940: 61 72 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 71 6c  ar*filename, sql
2950: 69 74 65 33 20 2a 2a 70 70 64 62 29 0a 7b 0a 20  ite3 **ppdb).{. 
2960: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
2970: 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 70  open(filename, p
2980: 70 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pdb);.}..__decls
2990: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
29a0: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
29b0: 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65  ite3_open16_inte
29c0: 72 6f 70 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a  rop(const void *
29d0: 66 69 6c 65 6e 61 6d 65 2c 20 73 71 6c 69 74 65  filename, sqlite
29e0: 33 20 2a 2a 70 70 64 62 29 0a 7b 0a 20 20 72 65  3 **ppdb).{.  re
29f0: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 6f 70 65  turn sqlite3_ope
2a00: 6e 31 36 28 66 69 6c 65 6e 61 6d 65 2c 20 70 70  n16(filename, pp
2a10: 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  db);.}..__declsp
2a20: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
2a30: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
2a40: 74 65 33 5f 65 72 72 63 6f 64 65 5f 69 6e 74 65  te3_errcode_inte
2a50: 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29  rop(sqlite3 *db)
2a60: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
2a70: 74 65 33 5f 65 72 72 63 6f 64 65 28 64 62 29 3b  te3_errcode(db);
2a80: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2a90: 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20  llexport) const 
2aa0: 63 68 61 72 20 2a 20 5f 5f 73 74 64 63 61 6c 6c  char * __stdcall
2ab0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f   sqlite3_errmsg_
2ac0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20  interop(sqlite3 
2ad0: 2a 64 62 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a  *db, int *plen).
2ae0: 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  {.  const char *
2af0: 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 65  pval = sqlite3_e
2b00: 72 72 6d 73 67 28 64 62 29 3b 0a 20 20 2a 70 6c  rrmsg(db);.  *pl
2b10: 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30 29  en = (pval != 0)
2b20: 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29 20   ? strlen(pval) 
2b30: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76  : 0;.  return pv
2b40: 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  al;.}..__declspe
2b50: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e  c(dllexport) con
2b60: 73 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63  st void * __stdc
2b70: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  all sqlite3_errm
2b80: 73 67 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c  sg16_interop(sql
2b90: 69 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 2a 70  ite3 *db, int *p
2ba0: 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 76  len).{.  const v
2bb0: 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69  oid *pval = sqli
2bc0: 74 65 33 5f 65 72 72 6d 73 67 31 36 28 64 62 29  te3_errmsg16(db)
2bd0: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61  ;.  *plen = (pva
2be0: 6c 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e  l != 0) ? wcslen
2bf0: 28 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c  ((wchar_t *)pval
2c00: 29 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72  ) * sizeof(wchar
2c10: 5f 74 29 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e  _t): 0;.  return
2c20: 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c   pval;.}..__decl
2c30: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
2c40: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
2c50: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
2c60: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64  terop(sqlite3 *d
2c70: 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  b, const char *s
2c80: 71 6c 2c 20 69 6e 74 20 6e 62 79 74 65 73 2c 20  ql, int nbytes, 
2c90: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
2ca0: 70 73 74 6d 74 2c 20 63 6f 6e 73 74 20 63 68 61  pstmt, const cha
2cb0: 72 20 2a 2a 70 7a 74 61 69 6c 2c 20 69 6e 74 20  r **pztail, int 
2cc0: 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e  *plen).{.  int n
2cd0: 20 3d 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61   = sqlite3_prepa
2ce0: 72 65 28 64 62 2c 20 73 71 6c 2c 20 6e 62 79 74  re(db, sql, nbyt
2cf0: 65 73 2c 20 70 70 73 74 6d 74 2c 20 70 7a 74 61  es, ppstmt, pzta
2d00: 69 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  il);.  *plen = (
2d10: 2a 70 7a 74 61 69 6c 20 21 3d 20 30 29 20 3f 20  *pztail != 0) ? 
2d20: 73 74 72 6c 65 6e 28 2a 70 7a 74 61 69 6c 29 20  strlen(*pztail) 
2d30: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b  : 0;.  return n;
2d40: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2d50: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
2d60: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2d70: 70 72 65 70 61 72 65 31 36 5f 69 6e 74 65 72 6f  prepare16_intero
2d80: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63  p(sqlite3 *db, c
2d90: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 2c 20  onst void *sql, 
2da0: 69 6e 74 20 6e 63 68 61 72 73 2c 20 73 71 6c 69  int nchars, sqli
2db0: 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 73 74 6d  te3_stmt **ppstm
2dc0: 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a  t, const void **
2dd0: 70 7a 74 61 69 6c 2c 20 69 6e 74 20 2a 70 6c 65  pztail, int *ple
2de0: 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20 73  n).{.  int n = s
2df0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
2e00: 28 64 62 2c 20 73 71 6c 2c 20 6e 63 68 61 72 73  (db, sql, nchars
2e10: 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f   * sizeof(wchar_
2e20: 74 29 2c 20 70 70 73 74 6d 74 2c 20 70 7a 74 61  t), ppstmt, pzta
2e30: 69 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  il);.  *plen = (
2e40: 2a 70 7a 74 61 69 6c 20 21 3d 20 30 29 20 3f 20  *pztail != 0) ? 
2e50: 77 63 73 6c 65 6e 28 28 77 63 68 61 72 5f 74 20  wcslen((wchar_t 
2e60: 2a 29 2a 70 7a 74 61 69 6c 29 20 2a 20 73 69 7a  *)*pztail) * siz
2e70: 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a 20 30  eof(wchar_t) : 0
2e80: 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a  ;.  return n;.}.
2e90: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
2ea0: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
2eb0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e  call sqlite3_bin
2ec0: 64 5f 62 6c 6f 62 5f 69 6e 74 65 72 6f 70 28 73  d_blob_interop(s
2ed0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
2ee0: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 63 6f 6e  t, int iCol, con
2ef0: 73 74 20 76 6f 69 64 20 2a 70 76 2c 20 69 6e 74  st void *pv, int
2f00: 20 6e 2c 20 76 6f 69 64 28 2a 63 62 29 28 76 6f   n, void(*cb)(vo
2f10: 69 64 2a 29 29 0a 7b 0a 20 20 72 65 74 75 72 6e  id*)).{.  return
2f20: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c   sqlite3_bind_bl
2f30: 6f 62 28 73 74 6d 74 2c 20 69 43 6f 6c 2c 20 70  ob(stmt, iCol, p
2f40: 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f  v, n, cb);.}..__
2f50: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
2f60: 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c  rt) int __stdcal
2f70: 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  l sqlite3_bind_d
2f80: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71  ouble_interop(sq
2f90: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74  lite3_stmt *stmt
2fa0: 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 64 6f 75 62  , int iCol, doub
2fb0: 6c 65 20 2a 76 61 6c 29 0a 7b 0a 09 72 65 74 75  le *val).{..retu
2fc0: 72 6e 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  rn sqlite3_bind_
2fd0: 64 6f 75 62 6c 65 28 73 74 6d 74 2c 69 43 6f 6c  double(stmt,iCol
2fe0: 2c 2a 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  ,*val);.}..__dec
2ff0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
3000: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
3010: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 5f  qlite3_bind_int_
3020: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
3030: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
3040: 69 43 6f 6c 2c 20 69 6e 74 20 76 61 6c 29 0a 7b  iCol, int val).{
3050: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
3060: 33 5f 62 69 6e 64 5f 69 6e 74 28 73 74 6d 74 2c  3_bind_int(stmt,
3070: 20 69 43 6f 6c 2c 20 76 61 6c 29 3b 0a 7d 0a 0a   iCol, val);.}..
3080: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3090: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
30a0: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  all sqlite3_bind
30b0: 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 73  _int64_interop(s
30c0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
30d0: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 73 71 6c  t, int iCol, sql
30e0: 69 74 65 5f 69 6e 74 36 34 20 2a 76 61 6c 29 0a  ite_int64 *val).
30f0: 7b 0a 09 72 65 74 75 72 6e 20 73 71 6c 69 74 65  {..return sqlite
3100: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 73 74 6d  3_bind_int64(stm
3110: 74 2c 69 43 6f 6c 2c 2a 76 61 6c 29 3b 0a 7d 0a  t,iCol,*val);.}.
3120: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
3130: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
3140: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e  call sqlite3_bin
3150: 64 5f 6e 75 6c 6c 5f 69 6e 74 65 72 6f 70 28 73  d_null_interop(s
3160: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
3170: 74 2c 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20  t, int iCol).{. 
3180: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
3190: 62 69 6e 64 5f 6e 75 6c 6c 28 73 74 6d 74 2c 20  bind_null(stmt, 
31a0: 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  iCol);.}..__decl
31b0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
31c0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
31d0: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 5f  lite3_bind_text_
31e0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
31f0: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
3200: 69 43 6f 6c 2c 20 63 6f 6e 73 74 20 63 68 61 72  iCol, const char
3210: 20 2a 76 61 6c 2c 20 69 6e 74 20 6e 2c 20 76 6f   *val, int n, vo
3220: 69 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29  id(*cb)(void *))
3230: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
3240: 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 73 74  te3_bind_text(st
3250: 6d 74 2c 20 69 43 6f 6c 2c 20 76 61 6c 2c 20 6e  mt, iCol, val, n
3260: 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  , cb);.}..__decl
3270: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
3280: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
3290: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
32a0: 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  6_interop(sqlite
32b0: 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e  3_stmt *stmt, in
32c0: 74 20 69 43 6f 6c 2c 20 63 6f 6e 73 74 20 76 6f  t iCol, const vo
32d0: 69 64 20 2a 76 61 6c 2c 20 69 6e 74 20 6e 2c 20  id *val, int n, 
32e0: 76 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20 2a  void(*cb)(void *
32f0: 29 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  )).{.  return sq
3300: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
3310: 36 28 73 74 6d 74 2c 20 69 43 6f 6c 2c 20 76 61  6(stmt, iCol, va
3320: 6c 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f  l, n, cb);.}..__
3330: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
3340: 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c  rt) int __stdcal
3350: 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  l sqlite3_bind_p
3360: 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 5f 69  arameter_count_i
3370: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
3380: 74 6d 74 20 2a 73 74 6d 74 29 0a 7b 0a 20 20 72  tmt *stmt).{.  r
3390: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62 69  eturn sqlite3_bi
33a0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
33b0: 6e 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64  nt(stmt);.}..__d
33c0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
33d0: 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20  t) const char * 
33e0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
33f0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
3400: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 73 71  _name_interop(sq
3410: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74  lite3_stmt *stmt
3420: 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20  , int iCol, int 
3430: 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74  *plen).{.  const
3440: 20 63 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71   char *pval = sq
3450: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
3460: 65 74 65 72 5f 6e 61 6d 65 28 73 74 6d 74 2c 20  eter_name(stmt, 
3470: 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d  iCol);.  *plen =
3480: 20 28 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 73   (pval != 0) ? s
3490: 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a 20 30 3b  trlen(pval) : 0;
34a0: 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a  .  return pval;.
34b0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
34c0: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
34d0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62  tdcall sqlite3_b
34e0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
34f0: 64 65 78 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  dex_interop(sqli
3500: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20  te3_stmt *stmt, 
3510: 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
3520: 65 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  e).{.  return sq
3530: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
3540: 65 74 65 72 5f 69 6e 64 65 78 28 73 74 6d 74 2c  eter_index(stmt,
3550: 20 7a 4e 61 6d 65 29 3b 0a 7d 0a 0a 5f 5f 64 65   zName);.}..__de
3560: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
3570: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
3580: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63  sqlite3_column_c
3590: 6f 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  ount_interop(sql
35a0: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29  ite3_stmt *stmt)
35b0: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
35c0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74  te3_column_count
35d0: 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  (stmt);.}..__dec
35e0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
35f0: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20 5f 5f   const char * __
3600: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3610: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65  column_name_inte
3620: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
3630: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
3640: 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20  , int *plen).{. 
3650: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76 61   const char *pva
3660: 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  l = sqlite3_colu
3670: 6d 6e 5f 6e 61 6d 65 28 73 74 6d 74 2c 20 69 43  mn_name(stmt, iC
3680: 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  ol);.  *plen = (
3690: 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 73 74 72  pval != 0) ? str
36a0: 6c 65 6e 28 70 76 61 6c 29 20 3a 20 30 3b 0a 20  len(pval) : 0;. 
36b0: 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a   return pval;.}.
36c0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
36d0: 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69  xport) const voi
36e0: 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  d * __stdcall sq
36f0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
3700: 65 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  e16_interop(sqli
3710: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20  te3_stmt *stmt, 
3720: 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70  int iCol, int *p
3730: 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 76  len).{.  const v
3740: 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69  oid *pval = sqli
3750: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
3760: 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20  6(stmt, iCol);. 
3770: 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21   *plen = (pval !
3780: 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77  = 0) ? wcslen((w
3790: 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a  char_t *)pval) *
37a0: 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29   sizeof(wchar_t)
37b0: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70   : 0;.  return p
37c0: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
37d0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
37e0: 6e 73 74 20 63 68 61 72 20 2a 20 5f 5f 73 74 64  nst char * __std
37f0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c  call sqlite3_col
3800: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74  umn_decltype_int
3810: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
3820: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
3830: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
3840: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76    const char *pv
3850: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
3860: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 74 6d  umn_decltype(stm
3870: 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65  t, iCol);.  *ple
3880: 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30 29 20  n = (pval != 0) 
3890: 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a  ? strlen(pval) :
38a0: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
38b0: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
38c0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73  (dllexport) cons
38d0: 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63 61  t void * __stdca
38e0: 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ll sqlite3_colum
38f0: 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74  n_decltype16_int
3900: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
3910: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
3920: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
3930: 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76    const void *pv
3940: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
3950: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 73  umn_decltype16(s
3960: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70  tmt, iCol);.  *p
3970: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
3980: 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68 61  ) ? wcslen((wcha
3990: 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20 73 69  r_t *)pval) * si
39a0: 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a 20  zeof(wchar_t) : 
39b0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
39c0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
39d0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
39e0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
39f0: 5f 73 74 65 70 5f 69 6e 74 65 72 6f 70 28 73 71  _step_interop(sq
3a00: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74  lite3_stmt *stmt
3a10: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
3a20: 69 74 65 33 5f 73 74 65 70 28 73 74 6d 74 29 3b  ite3_step(stmt);
3a30: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3a40: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
3a50: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3a60: 64 61 74 61 5f 63 6f 75 6e 74 5f 69 6e 74 65 72  data_count_inter
3a70: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
3a80: 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75 72  *stmt).{.  retur
3a90: 6e 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 63  n sqlite3_data_c
3aa0: 6f 75 6e 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f  ount(stmt);.}.._
3ab0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
3ac0: 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69 64 20  ort) const void 
3ad0: 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  * __stdcall sqli
3ae0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 5f  te3_column_blob_
3af0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
3b00: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
3b10: 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e  iCol).{.  return
3b20: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3b30: 62 6c 6f 62 28 73 74 6d 74 2c 20 69 43 6f 6c 29  blob(stmt, iCol)
3b40: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3b50: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
3b60: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3b70: 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 5f 69 6e  _column_bytes_in
3b80: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
3b90: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
3ba0: 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  ol).{.  return s
3bb0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
3bc0: 74 65 73 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  tes(stmt, iCol);
3bd0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3be0: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
3bf0: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3c00: 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 5f 69  column_bytes16_i
3c10: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
3c20: 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69  tmt *stmt, int i
3c30: 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  Col).{.  return 
3c40: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
3c50: 79 74 65 73 31 36 28 73 74 6d 74 2c 20 69 43 6f  ytes16(stmt, iCo
3c60: 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  l);.}..__declspe
3c70: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69  c(dllexport) voi
3c80: 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  d __stdcall sqli
3c90: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
3ca0: 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  e_interop(sqlite
3cb0: 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e  3_stmt *stmt, in
3cc0: 74 20 69 43 6f 6c 2c 20 64 6f 75 62 6c 65 20 2a  t iCol, double *
3cd0: 76 61 6c 29 0a 7b 0a 09 2a 76 61 6c 20 3d 20 73  val).{..*val = s
3ce0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
3cf0: 75 62 6c 65 28 73 74 6d 74 2c 69 43 6f 6c 29 3b  uble(stmt,iCol);
3d00: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3d10: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
3d20: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3d30: 63 6f 6c 75 6d 6e 5f 69 6e 74 5f 69 6e 74 65 72  column_int_inter
3d40: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
3d50: 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 29  *stmt, int iCol)
3d60: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
3d70: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73  te3_column_int(s
3d80: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f  tmt, iCol);.}.._
3d90: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
3da0: 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63  ort) void __stdc
3db0: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  all sqlite3_colu
3dc0: 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  mn_int64_interop
3dd0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73  (sqlite3_stmt *s
3de0: 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 73  tmt, int iCol, s
3df0: 71 6c 69 74 65 5f 69 6e 74 36 34 20 2a 76 61 6c  qlite_int64 *val
3e00: 29 0a 7b 0a 09 2a 76 61 6c 20 3d 20 73 71 6c 69  ).{..*val = sqli
3e10: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
3e20: 28 73 74 6d 74 2c 69 43 6f 6c 29 3b 0a 7d 0a 0a  (stmt,iCol);.}..
3e30: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3e40: 70 6f 72 74 29 20 63 6f 6e 73 74 20 75 6e 73 69  port) const unsi
3e50: 67 6e 65 64 20 63 68 61 72 20 2a 20 5f 5f 73 74  gned char * __st
3e60: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f  dcall sqlite3_co
3e70: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
3e80: 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  p(sqlite3_stmt *
3e90: 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20  stmt, int iCol, 
3ea0: 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63  int *plen).{.  c
3eb0: 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68  onst unsigned ch
3ec0: 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74  ar *pval = sqlit
3ed0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73  e3_column_text(s
3ee0: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70  tmt, iCol);.  *p
3ef0: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
3f00: 29 20 3f 20 73 74 72 6c 65 6e 28 28 63 68 61 72  ) ? strlen((char
3f10: 20 2a 29 70 76 61 6c 29 20 3a 20 30 3b 0a 20 20   *)pval) : 0;.  
3f20: 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a  return pval;.}..
3f30: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3f40: 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69 64  port) const void
3f50: 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c   * __stdcall sql
3f60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
3f70: 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  16_interop(sqlit
3f80: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69  e3_stmt *stmt, i
3f90: 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c  nt iCol, int *pl
3fa0: 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 76 6f  en).{.  const vo
3fb0: 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74  id *pval = sqlit
3fc0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
3fd0: 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20  (stmt, iCol);.  
3fe0: 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d  *plen = (pval !=
3ff0: 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63   0) ? wcslen((wc
4000: 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20  har_t *)pval) * 
4010: 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 3a  sizeof(wchar_t):
4020: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
4030: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
4040: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
4050: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
4060: 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 5f 69 6e  3_column_type_in
4070: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
4080: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
4090: 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  ol).{.  return s
40a0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
40b0: 70 65 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a  pe(stmt, iCol);.
40c0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
40d0: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
40e0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 66  tdcall sqlite3_f
40f0: 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28  inalize_interop(
4100: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
4110: 6d 74 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  mt).{.  return s
4120: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
4130: 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  stmt);.}..__decl
4140: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
4150: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
4160: 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65  lite3_reset_inte
4170: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
4180: 20 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75   *stmt).{.  retu
4190: 72 6e 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  rn sqlite3_reset
41a0: 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  (stmt);.}..__dec
41b0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
41c0: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
41d0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
41e0: 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 73  nction_interop(s
41f0: 71 6c 69 74 65 33 20 2a 70 73 71 6c 2c 20 63 6f  qlite3 *psql, co
4200: 6e 73 74 20 63 68 61 72 20 2a 7a 46 75 6e 63 74  nst char *zFunct
4210: 69 6f 6e 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  ionName, int nAr
4220: 67 2c 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c  g, int eTextRep,
4230: 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20   SQLITEUSERFUNC 
4240: 66 75 6e 63 2c 20 53 51 4c 49 54 45 55 53 45 52  func, SQLITEUSER
4250: 46 55 4e 43 20 66 75 6e 63 73 74 65 70 2c 20 53  FUNC funcstep, S
4260: 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66 75  QLITEUSERFUNC fu
4270: 6e 63 66 69 6e 61 6c 2c 20 76 6f 69 64 20 2a 2a  ncfinal, void **
4280: 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69 6e  ppCookie).{.  in
4290: 74 20 6e 3b 0a 20 20 53 51 4c 49 54 45 55 53 45  t n;.  SQLITEUSE
42a0: 52 46 55 4e 43 20 2a 70 20 3d 20 28 53 51 4c 49  RFUNC *p = (SQLI
42b0: 54 45 55 53 45 52 46 55 4e 43 20 2a 29 6d 61 6c  TEUSERFUNC *)mal
42c0: 6c 6f 63 28 73 69 7a 65 6f 66 28 53 51 4c 49 54  loc(sizeof(SQLIT
42d0: 45 55 53 45 52 46 55 4e 43 29 20 2a 20 33 29 3b  EUSERFUNC) * 3);
42e0: 0a 0a 20 20 70 5b 30 5d 20 3d 20 66 75 6e 63 3b  ..  p[0] = func;
42f0: 0a 20 20 70 5b 31 5d 20 3d 20 66 75 6e 63 73 74  .  p[1] = funcst
4300: 65 70 3b 0a 20 20 70 5b 32 5d 20 3d 20 66 75 6e  ep;.  p[2] = fun
4310: 63 66 69 6e 61 6c 3b 0a 0a 20 20 2a 70 70 43 6f  cfinal;..  *ppCo
4320: 6f 6b 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d  okie = 0;..  n =
4330: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
4340: 66 75 6e 63 74 69 6f 6e 28 70 73 71 6c 2c 20 7a  function(psql, z
4350: 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e 41  FunctionName, nA
4360: 72 67 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c  rg, eTextRep, p,
4370: 20 28 66 75 6e 63 20 21 3d 20 30 29 20 3f 20 73   (func != 0) ? s
4380: 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66  qlite3_interop_f
4390: 75 6e 63 20 3a 20 30 2c 20 28 66 75 6e 63 73 74  unc : 0, (funcst
43a0: 65 70 20 21 3d 20 30 29 20 3f 20 73 71 6c 69 74  ep != 0) ? sqlit
43b0: 65 33 5f 69 6e 74 65 72 6f 70 5f 73 74 65 70 20  e3_interop_step 
43c0: 3a 20 30 2c 20 28 66 75 6e 63 66 69 6e 61 6c 20  : 0, (funcfinal 
43d0: 21 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33 5f  != 0) ? sqlite3_
43e0: 69 6e 74 65 72 6f 70 5f 66 69 6e 61 6c 20 3a 20  interop_final : 
43f0: 30 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20 30  0);.  if (n != 0
4400: 29 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a 20  ).    free(p);. 
4410: 20 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f 6f   else.    *ppCoo
4420: 6b 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74 75  kie = p;..  retu
4430: 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  rn n;.}..__decls
4440: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
4450: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
4460: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
4470: 74 69 6f 6e 31 36 5f 69 6e 74 65 72 6f 70 28 73  tion16_interop(s
4480: 71 6c 69 74 65 33 20 2a 70 73 71 6c 2c 20 76 6f  qlite3 *psql, vo
4490: 69 64 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d  id *zFunctionNam
44a0: 65 2c 20 69 6e 74 20 6e 41 72 67 2c 20 69 6e 74  e, int nArg, int
44b0: 20 65 54 65 78 74 52 65 70 2c 20 53 51 4c 49 54   eTextRep, SQLIT
44c0: 45 55 53 45 52 46 55 4e 43 20 66 75 6e 63 2c 20  EUSERFUNC func, 
44d0: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66  SQLITEUSERFUNC f
44e0: 75 6e 63 73 74 65 70 2c 20 53 51 4c 49 54 45 55  uncstep, SQLITEU
44f0: 53 45 52 46 55 4e 43 20 66 75 6e 63 66 69 6e 61  SERFUNC funcfina
4500: 6c 2c 20 76 6f 69 64 20 2a 2a 70 70 43 6f 6f 6b  l, void **ppCook
4510: 69 65 29 0a 7b 0a 20 20 69 6e 74 20 6e 3b 0a 20  ie).{.  int n;. 
4520: 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20   SQLITEUSERFUNC 
4530: 2a 70 20 3d 20 28 53 51 4c 49 54 45 55 53 45 52  *p = (SQLITEUSER
4540: 46 55 4e 43 20 2a 29 6d 61 6c 6c 6f 63 28 73 69  FUNC *)malloc(si
4550: 7a 65 6f 66 28 53 51 4c 49 54 45 55 53 45 52 46  zeof(SQLITEUSERF
4560: 55 4e 43 29 20 2a 20 33 29 3b 0a 0a 20 20 70 5b  UNC) * 3);..  p[
4570: 30 5d 20 3d 20 66 75 6e 63 3b 0a 20 20 70 5b 31  0] = func;.  p[1
4580: 5d 20 3d 20 66 75 6e 63 73 74 65 70 3b 0a 20 20  ] = funcstep;.  
4590: 70 5b 32 5d 20 3d 20 66 75 6e 63 66 69 6e 61 6c  p[2] = funcfinal
45a0: 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69 65 20 3d  ;..  *ppCookie =
45b0: 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71 6c 69 74   0;..  n = sqlit
45c0: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
45d0: 6f 6e 31 36 28 70 73 71 6c 2c 20 7a 46 75 6e 63  on16(psql, zFunc
45e0: 74 69 6f 6e 4e 61 6d 65 2c 20 6e 41 72 67 2c 20  tionName, nArg, 
45f0: 65 54 65 78 74 52 65 70 2c 20 70 2c 20 28 66 75  eTextRep, p, (fu
4600: 6e 63 20 21 3d 20 30 29 20 3f 20 73 71 6c 69 74  nc != 0) ? sqlit
4610: 65 33 5f 69 6e 74 65 72 6f 70 5f 66 75 6e 63 20  e3_interop_func 
4620: 3a 20 30 2c 20 28 66 75 6e 63 73 74 65 70 20 21  : 0, (funcstep !
4630: 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33 5f 69  = 0) ? sqlite3_i
4640: 6e 74 65 72 6f 70 5f 73 74 65 70 20 3a 20 30 2c  nterop_step : 0,
4650: 20 28 66 75 6e 63 66 69 6e 61 6c 20 21 3d 20 30   (funcfinal != 0
4660: 29 20 3f 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  ) ? sqlite3_inte
4670: 72 6f 70 5f 66 69 6e 61 6c 20 3a 20 30 29 3b 0a  rop_final : 0);.
4680: 20 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20 20    if (n != 0).  
4690: 20 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c 73    free(p);.  els
46a0: 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20  e.    *ppCookie 
46b0: 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e  = p;..  return n
46c0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
46d0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
46e0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
46f0: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
4700: 6e 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  n_interop(sqlite
4710: 33 2a 20 64 62 2c 20 63 6f 6e 73 74 20 63 68 61  3* db, const cha
4720: 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 65 54  r *zName, int eT
4730: 65 78 74 52 65 70 2c 20 76 6f 69 64 2a 20 70 76  extRep, void* pv
4740: 55 73 65 72 2c 20 53 51 4c 49 54 45 43 4f 4c 4c  User, SQLITECOLL
4750: 41 54 49 4f 4e 20 66 75 6e 63 2c 20 76 6f 69 64  ATION func, void
4760: 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20   **ppCookie).{. 
4770: 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54 45   int n;.  SQLITE
4780: 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20 28  COLLATION *p = (
4790: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20  SQLITECOLLATION 
47a0: 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28  *)malloc(sizeof(
47b0: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 29  SQLITECOLLATION)
47c0: 29 3b 0a 20 20 0a 20 20 70 5b 30 5d 20 3d 20 66  );.  .  p[0] = f
47d0: 75 6e 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69  unc;..  *ppCooki
47e0: 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71  e = 0;..  n = sq
47f0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
4800: 6c 61 74 69 6f 6e 28 64 62 2c 20 7a 4e 61 6d 65  lation(db, zName
4810: 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20 73  , eTextRep, p, s
4820: 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 63  qlite3_interop_c
4830: 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 29 3b 0a 20  ollationfunc);. 
4840: 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20 20 20   if (n != 0).   
4850: 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c 73 65   free(p);.  else
4860: 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20 3d  .    *ppCookie =
4870: 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e 3b   p;..  return n;
4880: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
4890: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
48a0: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
48b0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
48c0: 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  16_interop(sqlit
48d0: 65 33 2a 20 64 62 2c 20 63 6f 6e 73 74 20 76 6f  e3* db, const vo
48e0: 69 64 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 65  id *zName, int e
48f0: 54 65 78 74 52 65 70 2c 20 76 6f 69 64 2a 20 70  TextRep, void* p
4900: 76 55 73 65 72 2c 20 53 51 4c 49 54 45 43 4f 4c  vUser, SQLITECOL
4910: 4c 41 54 49 4f 4e 20 66 75 6e 63 2c 20 76 6f 69  LATION func, voi
4920: 64 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a  d **ppCookie).{.
4930: 20 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54    int n;.  SQLIT
4940: 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20  ECOLLATION *p = 
4950: 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e  (SQLITECOLLATION
4960: 20 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66   *)malloc(sizeof
4970: 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e  (SQLITECOLLATION
4980: 29 29 3b 0a 20 20 0a 20 20 70 5b 30 5d 20 3d 20  ));.  .  p[0] = 
4990: 66 75 6e 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b  func;..  *ppCook
49a0: 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73  ie = 0;..  n = s
49b0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
49c0: 6c 6c 61 74 69 6f 6e 31 36 28 64 62 2c 20 28 63  llation16(db, (c
49d0: 6f 6e 73 74 20 63 68 61 72 20 2a 29 7a 4e 61 6d  onst char *)zNam
49e0: 65 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20  e, eTextRep, p, 
49f0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
4a00: 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 29 3b 0a  collationfunc);.
4a10: 20 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20 20    if (n != 0).  
4a20: 20 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c 73    free(p);.  els
4a30: 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20  e.    *ppCookie 
4a40: 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e  = p;..  return n
4a50: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
4a60: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
4a70: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
4a80: 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74  _aggregate_count
4a90: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
4aa0: 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 29 0a  _context *pctx).
4ab0: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
4ac0: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
4ad0: 6e 74 28 70 63 74 78 29 3b 0a 7d 0a 0a 5f 5f 64  nt(pctx);.}..__d
4ae0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
4af0: 74 29 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 20  t) const void * 
4b00: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
4b10: 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 5f 69 6e 74  3_value_blob_int
4b20: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c  erop(sqlite3_val
4b30: 75 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74  ue *val).{.  ret
4b40: 75 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  urn sqlite3_valu
4b50: 65 5f 62 6c 6f 62 28 76 61 6c 29 3b 0a 7d 0a 0a  e_blob(val);.}..
4b60: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
4b70: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
4b80: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  all sqlite3_valu
4b90: 65 5f 62 79 74 65 73 5f 69 6e 74 65 72 6f 70 28  e_bytes_interop(
4ba0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 76  sqlite3_value *v
4bb0: 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  al).{.  return s
4bc0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4bd0: 65 73 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  es(val);.}..__de
4be0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
4bf0: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
4c00: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
4c10: 74 65 73 31 36 5f 69 6e 74 65 72 6f 70 28 73 71  tes16_interop(sq
4c20: 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c  lite3_value *val
4c30: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
4c40: 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
4c50: 31 36 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  16(val);.}..__de
4c60: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
4c70: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
4c80: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
4c90: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71  ouble_interop(sq
4ca0: 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 70 76 61  lite3_value *pva
4cb0: 6c 2c 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29 0a  l, double *val).
4cc0: 7b 0a 20 20 2a 76 61 6c 20 3d 20 73 71 6c 69 74  {.  *val = sqlit
4cd0: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
4ce0: 70 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  pval);.}..__decl
4cf0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
4d00: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
4d10: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 5f  lite3_value_int_
4d20: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
4d30: 76 61 6c 75 65 20 2a 76 61 6c 29 0a 7b 0a 20 20  value *val).{.  
4d40: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 76  return sqlite3_v
4d50: 61 6c 75 65 5f 69 6e 74 28 76 61 6c 29 3b 0a 7d  alue_int(val);.}
4d60: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
4d70: 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73  export) void __s
4d80: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 76  tdcall sqlite3_v
4d90: 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
4da0: 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  op(sqlite3_value
4db0: 20 2a 70 76 61 6c 2c 20 73 71 6c 69 74 65 5f 69   *pval, sqlite_i
4dc0: 6e 74 36 34 20 2a 76 61 6c 29 0a 7b 0a 20 20 2a  nt64 *val).{.  *
4dd0: 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 76 61  val = sqlite3_va
4de0: 6c 75 65 5f 69 6e 74 36 34 28 70 76 61 6c 29 3b  lue_int64(pval);
4df0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
4e00: 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20  llexport) const 
4e10: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 20  unsigned char * 
4e20: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
4e30: 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74  3_value_text_int
4e40: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c  erop(sqlite3_val
4e50: 75 65 20 2a 76 61 6c 2c 20 69 6e 74 20 2a 70 6c  ue *val, int *pl
4e60: 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 75 6e  en).{.  const un
4e70: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 76 61  signed char *pva
4e80: 6c 20 3d 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  l = sqlite3_valu
4e90: 65 5f 74 65 78 74 28 76 61 6c 29 3b 0a 20 20 2a  e_text(val);.  *
4ea0: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
4eb0: 30 29 20 3f 20 73 74 72 6c 65 6e 28 28 63 68 61  0) ? strlen((cha
4ec0: 72 20 2a 29 70 76 61 6c 29 20 3a 20 30 3b 0a 20  r *)pval) : 0;. 
4ed0: 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a   return pval;.}.
4ee0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
4ef0: 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69  xport) const voi
4f00: 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  d * __stdcall sq
4f10: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
4f20: 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  16_interop(sqlit
4f30: 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c 2c 20 69  e3_value *val, i
4f40: 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f  nt *plen).{.  co
4f50: 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20 3d  nst void *pval =
4f60: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
4f70: 65 78 74 31 36 28 76 61 6c 29 3b 0a 20 20 2a 70  ext16(val);.  *p
4f80: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
4f90: 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68 61  ) ? wcslen((wcha
4fa0: 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20 73 69  r_t *)pval) * si
4fb0: 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a 20  zeof(wchar_t) : 
4fc0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
4fd0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
4fe0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
4ff0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
5000: 5f 76 61 6c 75 65 5f 74 79 70 65 5f 69 6e 74 65  _value_type_inte
5010: 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  rop(sqlite3_valu
5020: 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75  e *val).{.  retu
5030: 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  rn sqlite3_value
5040: 5f 74 79 70 65 28 76 61 6c 29 3b 0a 7d 0a 0a 5f  _type(val);.}.._
5050: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
5060: 6f 72 74 29 20 76 6f 69 64 20 2a 20 5f 5f 73 74  ort) void * __st
5070: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 61 67  dcall sqlite3_ag
5080: 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 5f  gregate_context_
5090: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
50a0: 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 69  context *pctx, i
50b0: 6e 74 20 6e 29 0a 7b 0a 20 20 72 65 74 75 72 6e  nt n).{.  return
50c0: 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
50d0: 74 65 5f 63 6f 6e 74 65 78 74 28 70 63 74 78 2c  te_context(pctx,
50e0: 20 6e 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70   n);.}..__declsp
50f0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
5100: 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  id __stdcall sql
5110: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
5120: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
5130: 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 20 63  _context *ctx, c
5140: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 2c 20 69  onst void *pv, i
5150: 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 63 62 29 28  nt n, void(*cb)(
5160: 76 6f 69 64 20 2a 29 29 0a 7b 0a 20 20 73 71 6c  void *)).{.  sql
5170: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
5180: 28 63 74 78 2c 20 70 76 2c 20 6e 2c 20 63 62 29  (ctx, pv, n, cb)
5190: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
51a0: 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20  dllexport) void 
51b0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
51c0: 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f  3_result_double_
51d0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
51e0: 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 64  context *pctx, d
51f0: 6f 75 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a 20 20  ouble *val).{.  
5200: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
5210: 6f 75 62 6c 65 28 70 63 74 78 2c 20 2a 76 61 6c  ouble(pctx, *val
5220: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
5230: 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64  (dllexport) void
5240: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
5250: 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 5f 69 6e  e3_result_int_in
5260: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f  terop(sqlite3_co
5270: 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 69 6e 74  ntext *pctx, int
5280: 20 76 61 6c 29 0a 7b 0a 20 20 73 71 6c 69 74 65   val).{.  sqlite
5290: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 70 63 74  3_result_int(pct
52a0: 78 2c 20 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  x, val);.}..__de
52b0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
52c0: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
52d0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
52e0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 73 71  int64_interop(sq
52f0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70  lite3_context *p
5300: 63 74 78 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36  ctx, sqlite_int6
5310: 34 20 2a 76 61 6c 29 0a 7b 0a 20 20 73 71 6c 69  4 *val).{.  sqli
5320: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
5330: 28 70 63 74 78 2c 20 2a 76 61 6c 29 3b 0a 7d 0a  (pctx, *val);.}.
5340: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
5350: 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74  xport) void __st
5360: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65  dcall sqlite3_re
5370: 73 75 6c 74 5f 6e 75 6c 6c 5f 69 6e 74 65 72 6f  sult_null_intero
5380: 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  p(sqlite3_contex
5390: 74 20 2a 70 63 74 78 29 0a 7b 0a 20 20 73 71 6c  t *pctx).{.  sql
53a0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c  ite3_result_null
53b0: 28 70 63 74 78 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  (pctx);.}..__dec
53c0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
53d0: 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20   void __stdcall 
53e0: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
53f0: 72 72 6f 72 5f 69 6e 74 65 72 6f 70 28 73 71 6c  rror_interop(sql
5400: 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63 74  ite3_context *ct
5410: 78 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70  x, const char *p
5420: 76 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 73 71  v, int n).{.  sq
5430: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
5440: 6f 72 28 63 74 78 2c 20 70 76 2c 20 6e 29 3b 0a  or(ctx, pv, n);.
5450: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
5460: 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f  lexport) void __
5470: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
5480: 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 5f 69  result_error16_i
5490: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63  nterop(sqlite3_c
54a0: 6f 6e 74 65 78 74 20 2a 63 74 78 2c 20 63 6f 6e  ontext *ctx, con
54b0: 73 74 20 76 6f 69 64 20 2a 70 76 2c 20 69 6e 74  st void *pv, int
54c0: 20 6e 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f   n).{.  sqlite3_
54d0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 63  result_error16(c
54e0: 74 78 2c 20 70 76 2c 20 6e 29 3b 0a 7d 0a 0a 5f  tx, pv, n);.}.._
54f0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
5500: 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63  ort) void __stdc
5510: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 75  all sqlite3_resu
5520: 6c 74 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  lt_text_interop(
5530: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
5540: 2a 63 74 78 2c 20 63 6f 6e 73 74 20 63 68 61 72  *ctx, const char
5550: 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f 69   *pv, int n, voi
5560: 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29 0a  d(*cb)(void *)).
5570: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75  {.  sqlite3_resu
5580: 6c 74 5f 74 65 78 74 28 63 74 78 2c 20 70 76 2c  lt_text(ctx, pv,
5590: 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64 65   n, cb);.}..__de
55a0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
55b0: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
55c0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
55d0: 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 73  text16_interop(s
55e0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a  qlite3_context *
55f0: 63 74 78 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20  ctx, const void 
5600: 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64  *pv, int n, void
5610: 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29 0a 7b  (*cb)(void *)).{
5620: 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  .  sqlite3_resul
5630: 74 5f 74 65 78 74 31 36 28 63 74 78 2c 20 70 76  t_text16(ctx, pv
5640: 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64  , n, cb);.}..__d
5650: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
5660: 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c  t) void __stdcal
5670: 6c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 63 6f  l sqlite3_realco
5680: 6c 6e 61 6d 65 73 28 73 71 6c 69 74 65 33 20 2a  lnames(sqlite3 *
5690: 64 62 2c 20 69 6e 74 20 62 4f 6e 29 0a 7b 0a 20  db, int bOn).{. 
56a0: 20 69 66 20 28 62 4f 6e 29 0a 20 20 20 20 64 62   if (bOn).    db
56b0: 2d 3e 66 6c 61 67 73 20 7c 3d 20 30 78 30 31 30  ->flags |= 0x010
56c0: 30 30 30 30 30 3b 0a 20 20 65 6c 73 65 0a 20 20  00000;.  else.  
56d0: 20 20 64 62 2d 3e 66 6c 61 67 73 20 26 3d 20 28    db->flags &= (
56e0: 7e 30 78 30 31 30 30 30 30 30 30 29 3b 0a 7d 0a  ~0x01000000);.}.
56f0: 0a 23 65 6e 64 69 66 20 2f 2f 20 4f 53 5f 57 49  .#endif // OS_WI
5700: 4e 0a                                            N.