System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b5a5636f130a19165a62e5a962d99cb431f5c359:


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 23 69 6e 63 6c  "src\os.h".#incl
0100: 75 64 65 20 3c 74 63 68 61 72 2e 68 3e 0a 0a 23  ude <tchar.h>..#
0110: 69 66 20 4e 44 45 42 55 47 0a 23 69 66 20 5f 57  if NDEBUG.#if _W
0120: 49 4e 33 32 5f 57 43 45 0a 23 69 6e 63 6c 75 64  IN32_WCE.#includ
0130: 65 20 22 6d 65 72 67 65 2e 68 22 0a 23 65 6c 73  e "merge.h".#els
0140: 65 0a 23 69 6e 63 6c 75 64 65 20 22 6d 65 72 67  e.#include "merg
0150: 65 5f 66 75 6c 6c 2e 68 22 0a 23 65 6e 64 69 66  e_full.h".#endif
0160: 20 2f 2f 20 5f 57 49 4e 33 32 5f 57 43 45 0a 23   // _WIN32_WCE.#
0170: 65 6e 64 69 66 20 2f 2f 20 4e 44 45 42 55 47 0a  endif // NDEBUG.
0180: 0a 2f 2f 20 46 6f 72 77 61 72 64 20 64 65 63 6c  .// Forward decl
0190: 61 72 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f  are this functio
01a0: 6e 2c 20 77 65 27 72 65 20 69 6d 70 6c 65 6d 65  n, we're impleme
01b0: 6e 74 69 6e 67 20 69 74 20 6c 61 74 65 72 0a 73  nting it later.s
01c0: 74 61 74 69 63 20 76 6f 69 64 20 67 65 6e 65 72  tatic void gener
01d0: 61 74 65 43 6f 6c 75 6d 6e 4e 61 6d 65 73 28 0a  ateColumnNames(.
01e0: 20 20 50 61 72 73 65 20 2a 70 50 61 72 73 65 2c    Parse *pParse,
01f0: 20 20 20 20 20 20 2f 2a 20 50 61 72 73 65 72 20        /* Parser 
0200: 63 6f 6e 74 65 78 74 20 2a 2f 0a 20 20 53 72 63  context */.  Src
0210: 4c 69 73 74 20 2a 70 54 61 62 4c 69 73 74 2c 20  List *pTabList, 
0220: 20 2f 2a 20 4c 69 73 74 20 6f 66 20 74 61 62 6c   /* List of tabl
0230: 65 73 20 2a 2f 0a 20 20 45 78 70 72 4c 69 73 74  es */.  ExprList
0240: 20 2a 70 45 4c 69 73 74 20 20 20 20 2f 2a 20 45   *pEList    /* E
0250: 78 70 72 65 73 73 69 6f 6e 73 20 64 65 66 69 6e  xpressions defin
0260: 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 20 73  ing the result s
0270: 65 74 20 2a 2f 0a 29 3b 0a 0a 23 69 6e 63 6c 75  et */.);..#inclu
0280: 64 65 20 22 73 72 63 5c 73 65 6c 65 63 74 2e 63  de "src\select.c
0290: 22 0a 0a 2f 2a 0a 2a 2a 20 47 65 6e 65 72 61 74  "../*.** Generat
02a0: 65 20 63 6f 64 65 20 74 68 61 74 20 77 69 6c 6c  e code that will
02b0: 20 74 65 6c 6c 20 74 68 65 20 56 44 42 45 20 74   tell the VDBE t
02c0: 68 65 20 6e 61 6d 65 73 20 6f 66 20 63 6f 6c 75  he names of colu
02d0: 6d 6e 73 0a 2a 2a 20 69 6e 20 74 68 65 20 72 65  mns.** in the re
02e0: 73 75 6c 74 20 73 65 74 2e 20 20 54 68 69 73 20  sult set.  This 
02f0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 75  information is u
0300: 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 74  sed to provide t
0310: 68 65 0a 2a 2a 20 61 7a 43 6f 6c 5b 5d 20 76 61  he.** azCol[] va
0320: 6c 75 65 73 20 69 6e 20 74 68 65 20 63 61 6c 6c  lues in the call
0330: 62 61 63 6b 2e 0a 2a 2f 0a 73 74 61 74 69 63 20  back..*/.static 
0340: 76 6f 69 64 20 67 65 6e 65 72 61 74 65 43 6f 6c  void generateCol
0350: 75 6d 6e 4e 61 6d 65 73 28 0a 20 20 50 61 72 73  umnNames(.  Pars
0360: 65 20 2a 70 50 61 72 73 65 2c 20 20 20 20 20 20  e *pParse,      
0370: 2f 2a 20 50 61 72 73 65 72 20 63 6f 6e 74 65 78  /* Parser contex
0380: 74 20 2a 2f 0a 20 20 53 72 63 4c 69 73 74 20 2a  t */.  SrcList *
0390: 70 54 61 62 4c 69 73 74 2c 20 20 2f 2a 20 4c 69  pTabList,  /* Li
03a0: 73 74 20 6f 66 20 74 61 62 6c 65 73 20 2a 2f 0a  st of tables */.
03b0: 20 20 45 78 70 72 4c 69 73 74 20 2a 70 45 4c 69    ExprList *pELi
03c0: 73 74 20 20 20 20 2f 2a 20 45 78 70 72 65 73 73  st    /* Express
03d0: 69 6f 6e 73 20 64 65 66 69 6e 69 6e 67 20 74 68  ions defining th
03e0: 65 20 72 65 73 75 6c 74 20 73 65 74 20 2a 2f 0a  e result set */.
03f0: 29 7b 0a 20 20 56 64 62 65 20 2a 76 20 3d 20 70  ){.  Vdbe *v = p
0400: 50 61 72 73 65 2d 3e 70 56 64 62 65 3b 0a 20 20  Parse->pVdbe;.  
0410: 69 6e 74 20 69 2c 20 6a 3b 0a 20 20 73 71 6c 69  int i, j;.  sqli
0420: 74 65 33 20 2a 64 62 20 3d 20 70 50 61 72 73 65  te3 *db = pParse
0430: 2d 3e 64 62 3b 0a 20 20 69 6e 74 20 66 75 6c 6c  ->db;.  int full
0440: 4e 61 6d 65 73 2c 20 73 68 6f 72 74 4e 61 6d 65  Names, shortName
0450: 73 3b 0a 20 20 69 6e 74 20 72 65 61 6c 4e 61 6d  s;.  int realNam
0460: 65 73 3b 20 20 20 20 20 20 20 20 20 20 20 20 20  es;             
0470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0480: 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44          /*** ADD
0490: 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65  ED - SQLite.Inte
04a0: 72 6f 70 20 2a 2a 2a 2f 0a 0a 20 20 72 65 61 6c  rop ***/..  real
04b0: 4e 61 6d 65 73 20 3d 20 28 64 62 2d 3e 66 6c 61  Names = (db->fla
04c0: 67 73 20 26 20 30 78 30 31 30 30 30 30 30 30 29  gs & 0x01000000)
04d0: 21 3d 30 3b 20 20 20 20 20 20 20 20 20 20 20 2f  !=0;           /
04e0: 2a 2a 2a 20 41 44 44 45 44 20 2d 20 53 51 4c 69  *** ADDED - SQLi
04f0: 74 65 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a  te.Interop ***/.
0500: 20 20 69 66 20 28 21 72 65 61 6c 4e 61 6d 65 73    if (!realNames
0510: 29 20 2f 2f 20 44 65 66 61 75 6c 74 20 74 6f 20  ) // Default to 
0520: 6e 6f 72 6d 61 6c 20 53 71 6c 69 74 65 33 20 20  normal Sqlite3  
0530: 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20       /*** ADDED 
0540: 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70  - SQLite.Interop
0550: 20 2a 2a 2a 2f 0a 20 20 7b 20 20 20 20 20 20 20   ***/.  {       
0560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0580: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20             /*** 
0590: 41 44 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49  ADDED - SQLite.I
05a0: 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20  nterop ***/.    
05b0: 5f 67 65 6e 65 72 61 74 65 43 6f 6c 75 6d 6e 4e  _generateColumnN
05c0: 61 6d 65 73 28 70 50 61 72 73 65 2c 20 70 54 61  ames(pParse, pTa
05d0: 62 4c 69 73 74 2c 20 70 45 4c 69 73 74 29 3b 20  bList, pEList); 
05e0: 20 2f 2a 2a 2a 20 41 44 44 45 44 20 2d 20 53 51   /*** ADDED - SQ
05f0: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a  Lite.Interop ***
0600: 2f 0a 20 20 20 20 72 65 74 75 72 6e 3b 20 20 20  /.    return;   
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 2f 2a 2a 2a 20 41 44 44 45         /*** ADDE
0640: 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  D - SQLite.Inter
0650: 6f 70 20 2a 2a 2a 2f 0a 20 20 7d 20 20 20 20 20  op ***/.  }     
0660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 2a               /**
0690: 2a 20 41 44 44 45 44 20 2d 20 53 51 4c 69 74 65  * ADDED - SQLite
06a0: 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 0a 23  .Interop ***/..#
06b0: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d  ifndef SQLITE_OM
06c0: 49 54 5f 45 58 50 4c 41 49 4e 0a 20 20 2f 2a 20  IT_EXPLAIN.  /* 
06d0: 49 66 20 74 68 69 73 20 69 73 20 61 6e 20 45 58  If this is an EX
06e0: 50 4c 41 49 4e 2c 20 73 6b 69 70 20 74 68 69 73  PLAIN, skip this
06f0: 20 73 74 65 70 20 2a 2f 0a 20 20 69 66 28 20 70   step */.  if( p
0700: 50 61 72 73 65 2d 3e 65 78 70 6c 61 69 6e 20 29  Parse->explain )
0710: 7b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20  {.    return;.  
0720: 7d 0a 23 65 6e 64 69 66 0a 0a 20 20 61 73 73 65  }.#endif..  asse
0730: 72 74 28 20 76 21 3d 30 20 29 3b 0a 20 20 69 66  rt( v!=0 );.  if
0740: 28 20 70 50 61 72 73 65 2d 3e 63 6f 6c 4e 61 6d  ( pParse->colNam
0750: 65 73 53 65 74 20 7c 7c 20 76 3d 3d 30 20 7c 7c  esSet || v==0 ||
0760: 20 73 71 6c 69 74 65 33 4d 61 6c 6c 6f 63 46 61   sqlite3MallocFa
0770: 69 6c 65 64 28 29 20 29 20 72 65 74 75 72 6e 3b  iled() ) return;
0780: 0a 20 20 70 50 61 72 73 65 2d 3e 63 6f 6c 4e 61  .  pParse->colNa
0790: 6d 65 73 53 65 74 20 3d 20 31 3b 0a 20 20 66 75  mesSet = 1;.  fu
07a0: 6c 6c 4e 61 6d 65 73 20 3d 20 28 64 62 2d 3e 66  llNames = (db->f
07b0: 6c 61 67 73 20 26 20 53 51 4c 49 54 45 5f 46 75  lags & SQLITE_Fu
07c0: 6c 6c 43 6f 6c 4e 61 6d 65 73 29 21 3d 30 3b 0a  llColNames)!=0;.
07d0: 20 20 73 68 6f 72 74 4e 61 6d 65 73 20 3d 20 28    shortNames = (
07e0: 64 62 2d 3e 66 6c 61 67 73 20 26 20 53 51 4c 49  db->flags & SQLI
07f0: 54 45 5f 53 68 6f 72 74 43 6f 6c 4e 61 6d 65 73  TE_ShortColNames
0800: 29 21 3d 30 3b 0a 20 20 69 66 20 28 72 65 61 6c  )!=0;.  if (real
0810: 4e 61 6d 65 73 29 20 66 75 6c 6c 4e 61 6d 65 73  Names) fullNames
0820: 20 3d 20 31 3b 20 20 20 20 20 20 20 20 20 20 20   = 1;           
0830: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20             /*** 
0840: 41 44 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49  ADDED - SQLite.I
0850: 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 0a 20 20 73  nterop ***/..  s
0860: 71 6c 69 74 65 33 56 64 62 65 53 65 74 4e 75 6d  qlite3VdbeSetNum
0870: 43 6f 6c 73 28 76 2c 20 70 45 4c 69 73 74 2d 3e  Cols(v, pEList->
0880: 6e 45 78 70 72 29 3b 0a 20 20 66 6f 72 28 69 3d  nExpr);.  for(i=
0890: 30 3b 20 69 3c 70 45 4c 69 73 74 2d 3e 6e 45 78  0; i<pEList->nEx
08a0: 70 72 3b 20 69 2b 2b 29 7b 0a 20 20 20 20 45 78  pr; i++){.    Ex
08b0: 70 72 20 2a 70 3b 0a 20 20 20 20 70 20 3d 20 70  pr *p;.    p = p
08c0: 45 4c 69 73 74 2d 3e 61 5b 69 5d 2e 70 45 78 70  EList->a[i].pExp
08d0: 72 3b 0a 20 20 20 20 69 66 28 20 70 3d 3d 30 20  r;.    if( p==0 
08e0: 29 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20  ) continue;.    
08f0: 69 66 28 20 70 45 4c 69 73 74 2d 3e 61 5b 69 5d  if( pEList->a[i]
0900: 2e 7a 4e 61 6d 65 20 26 26 20 28 72 65 61 6c 4e  .zName && (realN
0910: 61 6d 65 73 20 3d 3d 20 30 20 7c 7c 20 70 2d 3e  ames == 0 || p->
0920: 6f 70 20 21 3d 20 54 4b 5f 43 4f 4c 55 4d 4e 29  op != TK_COLUMN)
0930: 29 7b 20 20 20 2f 2a 2a 2a 20 43 48 41 4e 47 45  ){   /*** CHANGE
0940: 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  D - SQLite.Inter
0950: 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20 20 63 68  op ***/.      ch
0960: 61 72 20 2a 7a 4e 61 6d 65 20 3d 20 70 45 4c 69  ar *zName = pELi
0970: 73 74 2d 3e 61 5b 69 5d 2e 7a 4e 61 6d 65 3b 0a  st->a[i].zName;.
0980: 20 20 20 20 20 20 73 71 6c 69 74 65 33 56 64 62        sqlite3Vdb
0990: 65 53 65 74 43 6f 6c 4e 61 6d 65 28 76 2c 20 69  eSetColName(v, i
09a0: 2c 20 7a 4e 61 6d 65 2c 20 73 74 72 6c 65 6e 28  , zName, strlen(
09b0: 7a 4e 61 6d 65 29 29 3b 0a 20 20 20 20 20 20 63  zName));.      c
09c0: 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 7d 0a 20  ontinue;.    }. 
09d0: 20 20 20 69 66 28 20 70 2d 3e 6f 70 3d 3d 54 4b     if( p->op==TK
09e0: 5f 43 4f 4c 55 4d 4e 20 26 26 20 70 54 61 62 4c  _COLUMN && pTabL
09f0: 69 73 74 20 29 7b 0a 20 20 20 20 20 20 54 61 62  ist ){.      Tab
0a00: 6c 65 20 2a 70 54 61 62 3b 0a 20 20 20 20 20 20  le *pTab;.      
0a10: 63 68 61 72 20 2a 7a 43 6f 6c 3b 0a 20 20 20 20  char *zCol;.    
0a20: 20 20 69 6e 74 20 69 43 6f 6c 20 3d 20 70 2d 3e    int iCol = p->
0a30: 69 43 6f 6c 75 6d 6e 3b 0a 20 20 20 20 20 20 66  iColumn;.      f
0a40: 6f 72 28 6a 3d 30 3b 20 6a 3c 70 54 61 62 4c 69  or(j=0; j<pTabLi
0a50: 73 74 2d 3e 6e 53 72 63 20 26 26 20 70 54 61 62  st->nSrc && pTab
0a60: 4c 69 73 74 2d 3e 61 5b 6a 5d 2e 69 43 75 72 73  List->a[j].iCurs
0a70: 6f 72 21 3d 70 2d 3e 69 54 61 62 6c 65 3b 20 6a  or!=p->iTable; j
0a80: 2b 2b 29 7b 7d 0a 20 20 20 20 20 20 61 73 73 65  ++){}.      asse
0a90: 72 74 28 20 6a 3c 70 54 61 62 4c 69 73 74 2d 3e  rt( j<pTabList->
0aa0: 6e 53 72 63 20 29 3b 0a 20 20 20 20 20 20 70 54  nSrc );.      pT
0ab0: 61 62 20 3d 20 70 54 61 62 4c 69 73 74 2d 3e 61  ab = pTabList->a
0ac0: 5b 6a 5d 2e 70 54 61 62 3b 0a 20 20 20 20 20 20  [j].pTab;.      
0ad0: 69 66 28 20 69 43 6f 6c 3c 30 20 29 20 69 43 6f  if( iCol<0 ) iCo
0ae0: 6c 20 3d 20 70 54 61 62 2d 3e 69 50 4b 65 79 3b  l = pTab->iPKey;
0af0: 0a 20 20 20 20 20 20 61 73 73 65 72 74 28 20 69  .      assert( i
0b00: 43 6f 6c 3d 3d 2d 31 20 7c 7c 20 28 69 43 6f 6c  Col==-1 || (iCol
0b10: 3e 3d 30 20 26 26 20 69 43 6f 6c 3c 70 54 61 62  >=0 && iCol<pTab
0b20: 2d 3e 6e 43 6f 6c 29 20 29 3b 0a 20 20 20 20 20  ->nCol) );.     
0b30: 20 69 66 28 20 69 43 6f 6c 3c 30 20 29 7b 0a 20   if( iCol<0 ){. 
0b40: 20 20 20 20 20 20 20 7a 43 6f 6c 20 3d 20 22 72         zCol = "r
0b50: 6f 77 69 64 22 3b 0a 20 20 20 20 20 20 7d 65 6c  owid";.      }el
0b60: 73 65 7b 0a 20 20 20 20 20 20 20 20 7a 43 6f 6c  se{.        zCol
0b70: 20 3d 20 70 54 61 62 2d 3e 61 43 6f 6c 5b 69 43   = pTab->aCol[iC
0b80: 6f 6c 5d 2e 7a 4e 61 6d 65 3b 0a 20 20 20 20 20  ol].zName;.     
0b90: 20 7d 0a 20 20 20 20 20 20 69 66 28 20 21 73 68   }.      if( !sh
0ba0: 6f 72 74 4e 61 6d 65 73 20 26 26 20 21 66 75 6c  ortNames && !ful
0bb0: 6c 4e 61 6d 65 73 20 26 26 20 70 2d 3e 73 70 61  lNames && p->spa
0bc0: 6e 2e 7a 20 26 26 20 70 2d 3e 73 70 61 6e 2e 7a  n.z && p->span.z
0bd0: 5b 30 5d 20 29 7b 0a 20 20 20 20 20 20 20 20 73  [0] ){.        s
0be0: 71 6c 69 74 65 33 56 64 62 65 53 65 74 43 6f 6c  qlite3VdbeSetCol
0bf0: 4e 61 6d 65 28 76 2c 20 69 2c 20 28 63 68 61 72  Name(v, i, (char
0c00: 2a 29 70 2d 3e 73 70 61 6e 2e 7a 2c 20 70 2d 3e  *)p->span.z, p->
0c10: 73 70 61 6e 2e 6e 29 3b 0a 20 20 20 20 20 20 7d  span.n);.      }
0c20: 65 6c 73 65 20 69 66 28 20 66 75 6c 6c 4e 61 6d  else if( fullNam
0c30: 65 73 20 7c 7c 20 28 21 73 68 6f 72 74 4e 61 6d  es || (!shortNam
0c40: 65 73 20 26 26 20 70 54 61 62 4c 69 73 74 2d 3e  es && pTabList->
0c50: 6e 53 72 63 3e 31 29 20 29 7b 0a 20 20 20 20 20  nSrc>1) ){.     
0c60: 20 20 20 63 68 61 72 20 2a 7a 4e 61 6d 65 20 3d     char *zName =
0c70: 20 30 3b 0a 20 20 20 20 20 20 20 20 63 68 61 72   0;.        char
0c80: 20 2a 7a 54 61 62 3b 0a 20 20 20 20 20 20 20 20   *zTab;.        
0c90: 63 68 61 72 20 2a 7a 44 62 20 3d 20 30 3b 20 20  char *zDb = 0;  
0ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cd0: 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44          /*** ADD
0ce0: 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65  ED - SQLite.Inte
0cf0: 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20 20 20  rop ***/.       
0d00: 20 69 6e 74 20 69 44 62 3b 0a 0a 20 20 20 20 20   int iDb;..     
0d10: 20 20 20 69 44 62 20 3d 20 73 71 6c 69 74 65 33     iDb = sqlite3
0d20: 53 63 68 65 6d 61 54 6f 49 6e 64 65 78 28 70 50  SchemaToIndex(pP
0d30: 61 72 73 65 2d 3e 64 62 2c 20 70 54 61 62 2d 3e  arse->db, pTab->
0d40: 70 53 63 68 65 6d 61 29 3b 0a 0a 20 20 20 20 20  pSchema);..     
0d50: 20 20 20 7a 54 61 62 20 3d 20 70 54 61 62 4c 69     zTab = pTabLi
0d60: 73 74 2d 3e 61 5b 6a 5d 2e 7a 41 6c 69 61 73 3b  st->a[j].zAlias;
0d70: 0a 20 20 20 20 20 20 20 20 69 66 28 20 66 75 6c  .        if( ful
0d80: 6c 4e 61 6d 65 73 20 7c 7c 20 7a 54 61 62 3d 3d  lNames || zTab==
0d90: 30 20 29 7b 0a 20 20 20 20 20 20 20 20 20 20 69  0 ){.          i
0da0: 66 20 28 69 44 62 20 3e 20 31 29 20 7a 44 62 20  f (iDb > 1) zDb 
0db0: 3d 20 64 62 2d 3e 61 44 62 5b 69 44 62 5d 2e 7a  = db->aDb[iDb].z
0dc0: 4e 61 6d 65 3b 20 20 20 20 20 20 20 20 20 20 20  Name;           
0dd0: 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44           /*** AD
0de0: 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74  DED - SQLite.Int
0df0: 65 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20 20  erop ***/.      
0e00: 20 20 20 20 7a 54 61 62 20 3d 20 70 54 61 62 2d      zTab = pTab-
0e10: 3e 7a 4e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20  >zName;.        
0e20: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 7a  }.        if (!z
0e30: 44 62 20 7c 7c 20 21 72 65 61 6c 4e 61 6d 65 73  Db || !realNames
0e40: 29 20 73 71 6c 69 74 65 33 53 65 74 53 74 72 69  ) sqlite3SetStri
0e50: 6e 67 28 26 7a 4e 61 6d 65 2c 20 7a 54 61 62 2c  ng(&zName, zTab,
0e60: 20 22 5c 78 30 31 22 2c 20 7a 43 6f 6c 2c 20 30   "\x01", zCol, 0
0e70: 29 3b 20 20 20 2f 2a 2a 2a 20 43 48 41 4e 47 45  );   /*** CHANGE
0e80: 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  D - SQLite.Inter
0e90: 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20 20 20 20  op ***/.        
0ea0: 65 6c 73 65 20 73 71 6c 69 74 65 33 53 65 74 53  else sqlite3SetS
0eb0: 74 72 69 6e 67 28 26 7a 4e 61 6d 65 2c 20 7a 44  tring(&zName, zD
0ec0: 62 2c 20 22 5c 78 30 31 22 2c 20 7a 54 61 62 2c  b, "\x01", zTab,
0ed0: 20 22 5c 78 30 31 22 2c 20 7a 43 6f 6c 2c 20 30   "\x01", zCol, 0
0ee0: 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  );            /*
0ef0: 2a 2a 20 41 44 44 45 44 20 2d 20 53 51 4c 69 74  ** ADDED - SQLit
0f00: 65 2e 49 6e 74 65 72 6f 70 20 2a 2a 2a 2f 0a 20  e.Interop ***/. 
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 4e 61 6d 65 2c 20 50 33 5f 44 59 4e  i, zName, P3_DYN
0f40: 41 4d 49 43 29 3b 0a 20 20 20 20 20 20 7d 65 6c  AMIC);.      }el
0f50: 73 65 7b 0a 20 20 20 20 20 20 20 20 73 71 6c 69  se{.        sqli
0f60: 74 65 33 56 64 62 65 53 65 74 43 6f 6c 4e 61 6d  te3VdbeSetColNam
0f70: 65 28 76 2c 20 69 2c 20 7a 43 6f 6c 2c 20 73 74  e(v, i, zCol, st
0f80: 72 6c 65 6e 28 7a 43 6f 6c 29 29 3b 0a 20 20 20  rlen(zCol));.   
0f90: 20 20 20 7d 0a 20 20 20 20 7d 65 6c 73 65 20 69     }.    }else i
0fa0: 66 28 20 70 2d 3e 73 70 61 6e 2e 7a 20 26 26 20  f( p->span.z && 
0fb0: 70 2d 3e 73 70 61 6e 2e 7a 5b 30 5d 20 29 7b 0a  p->span.z[0] ){.
0fc0: 20 20 20 20 20 20 73 71 6c 69 74 65 33 56 64 62        sqlite3Vdb
0fd0: 65 53 65 74 43 6f 6c 4e 61 6d 65 28 76 2c 20 69  eSetColName(v, i
0fe0: 2c 20 28 63 68 61 72 2a 29 70 2d 3e 73 70 61 6e  , (char*)p->span
0ff0: 2e 7a 2c 20 70 2d 3e 73 70 61 6e 2e 6e 29 3b 0a  .z, p->span.n);.
1000: 20 20 20 20 20 20 2f 2a 20 73 71 6c 69 74 65 33        /* sqlite3
1010: 56 64 62 65 43 6f 6d 70 72 65 73 73 53 70 61 63  VdbeCompressSpac
1020: 65 28 76 2c 20 61 64 64 72 29 3b 20 2a 2f 0a 20  e(v, addr); */. 
1030: 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20     }else{.      
1040: 63 68 61 72 20 7a 4e 61 6d 65 5b 33 30 5d 3b 0a  char zName[30];.
1050: 20 20 20 20 20 20 61 73 73 65 72 74 28 20 70 2d        assert( p-
1060: 3e 6f 70 21 3d 54 4b 5f 43 4f 4c 55 4d 4e 20 7c  >op!=TK_COLUMN |
1070: 7c 20 70 54 61 62 4c 69 73 74 3d 3d 30 20 29 3b  | pTabList==0 );
1080: 0a 20 20 20 20 20 20 73 70 72 69 6e 74 66 28 7a  .      sprintf(z
1090: 4e 61 6d 65 2c 20 22 63 6f 6c 75 6d 6e 25 64 22  Name, "column%d"
10a0: 2c 20 69 2b 31 29 3b 0a 20 20 20 20 20 20 73 71  , i+1);.      sq
10b0: 6c 69 74 65 33 56 64 62 65 53 65 74 43 6f 6c 4e  lite3VdbeSetColN
10c0: 61 6d 65 28 76 2c 20 69 2c 20 7a 4e 61 6d 65 2c  ame(v, i, zName,
10d0: 20 30 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20   0);.    }.  }. 
10e0: 20 67 65 6e 65 72 61 74 65 43 6f 6c 75 6d 6e 54   generateColumnT
10f0: 79 70 65 73 28 70 50 61 72 73 65 2c 20 70 54 61  ypes(pParse, pTa
1100: 62 4c 69 73 74 2c 20 70 45 4c 69 73 74 29 3b 0a  bList, pEList);.
1110: 7d 0a 0a 23 69 66 64 65 66 20 4f 53 5f 57 49 4e  }..#ifdef OS_WIN
1120: 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 74 63 68 61  ..#include <tcha
1130: 72 2e 68 3e 0a 0a 74 79 70 65 64 65 66 20 76 6f  r.h>..typedef vo
1140: 69 64 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a 53  id (__stdcall *S
1150: 51 4c 49 54 45 55 53 45 52 46 55 4e 43 29 28 76  QLITEUSERFUNC)(v
1160: 6f 69 64 20 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  oid *, int, void
1170: 20 2a 2a 29 3b 0a 74 79 70 65 64 65 66 20 69 6e   **);.typedef in
1180: 74 20 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a 53  t  (__stdcall *S
1190: 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 29 28  QLITECOLLATION)(
11a0: 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20  int, const void 
11b0: 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f  *, int, const vo
11c0: 69 64 2a 29 3b 0a 0a 74 79 70 65 64 65 66 20 69  id*);..typedef i
11d0: 6e 74 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a 45  nt (__stdcall *E
11e0: 4e 43 52 59 50 54 46 49 4c 45 57 29 28 63 6f 6e  NCRYPTFILEW)(con
11f0: 73 74 20 77 63 68 61 72 5f 74 20 2a 29 3b 0a 74  st wchar_t *);.t
1200: 79 70 65 64 65 66 20 69 6e 74 20 28 5f 5f 73 74  ypedef int (__st
1210: 64 63 61 6c 6c 20 2a 45 4e 43 52 59 50 54 45 44  dcall *ENCRYPTED
1220: 53 54 41 54 55 53 57 29 28 63 6f 6e 73 74 20 77  STATUSW)(const w
1230: 63 68 61 72 5f 74 20 2a 2c 20 75 6e 73 69 67 6e  char_t *, unsign
1240: 65 64 20 6c 6f 6e 67 20 2a 29 3b 0a 74 79 70 65  ed long *);.type
1250: 64 65 66 20 69 6e 74 20 28 5f 5f 73 74 64 63 61  def int (__stdca
1260: 6c 6c 20 2a 44 45 43 52 59 50 54 46 49 4c 45 57  ll *DECRYPTFILEW
1270: 29 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20  )(const wchar_t 
1280: 2a 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  *, unsigned long
1290: 29 3b 0a 0a 74 79 70 65 64 65 66 20 48 41 4e 44  );..typedef HAND
12a0: 4c 45 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a 43  LE (__stdcall *C
12b0: 52 45 41 54 45 46 49 4c 45 57 29 28 0a 20 20 20  REATEFILEW)(.   
12c0: 20 4c 50 43 57 53 54 52 2c 0a 20 20 20 20 44 57   LPCWSTR,.    DW
12d0: 4f 52 44 2c 0a 20 20 20 20 44 57 4f 52 44 2c 0a  ORD,.    DWORD,.
12e0: 20 20 20 20 4c 50 53 45 43 55 52 49 54 59 5f 41      LPSECURITY_A
12f0: 54 54 52 49 42 55 54 45 53 2c 0a 20 20 20 20 44  TTRIBUTES,.    D
1300: 57 4f 52 44 2c 0a 20 20 20 20 44 57 4f 52 44 2c  WORD,.    DWORD,
1310: 0a 20 20 20 20 48 41 4e 44 4c 45 29 3b 0a 0a 2f  .    HANDLE);../
1320: 2f 20 43 61 6c 6c 62 61 63 6b 20 77 72 61 70 70  / Callback wrapp
1330: 65 72 73 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  ers.int sqlite3_
1340: 69 6e 74 65 72 6f 70 5f 63 6f 6c 6c 61 74 69 6f  interop_collatio
1350: 6e 66 75 6e 63 28 76 6f 69 64 20 2a 70 76 2c 20  nfunc(void *pv, 
1360: 69 6e 74 20 6c 65 6e 31 2c 20 63 6f 6e 73 74 20  int len1, const 
1370: 76 6f 69 64 20 2a 70 76 31 2c 20 69 6e 74 20 6c  void *pv1, int l
1380: 65 6e 32 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20  en2, const void 
1390: 2a 70 76 32 29 0a 7b 0a 20 20 53 51 4c 49 54 45  *pv2).{.  SQLITE
13a0: 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20 28  COLLATION *p = (
13b0: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20  SQLITECOLLATION 
13c0: 2a 29 70 76 3b 0a 20 20 72 65 74 75 72 6e 20 70  *)pv;.  return p
13d0: 5b 30 5d 28 6c 65 6e 31 2c 20 70 76 31 2c 20 6c  [0](len1, pv1, l
13e0: 65 6e 32 2c 20 70 76 32 29 3b 0a 7d 0a 0a 76 6f  en2, pv2);.}..vo
13f0: 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  id sqlite3_inter
1400: 6f 70 5f 66 75 6e 63 28 73 71 6c 69 74 65 33 5f  op_func(sqlite3_
1410: 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 69  context *pctx, i
1420: 6e 74 20 6e 2c 20 73 71 6c 69 74 65 33 5f 76 61  nt n, sqlite3_va
1430: 6c 75 65 20 2a 2a 70 76 29 0a 7b 0a 20 20 53 51  lue **pv).{.  SQ
1440: 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a 70 66  LITEUSERFUNC *pf
1450: 20 3d 20 28 53 51 4c 49 54 45 55 53 45 52 46 55   = (SQLITEUSERFU
1460: 4e 43 20 2a 29 73 71 6c 69 74 65 33 5f 75 73 65  NC *)sqlite3_use
1470: 72 5f 64 61 74 61 28 70 63 74 78 29 3b 0a 20 20  r_data(pctx);.  
1480: 70 66 5b 30 5d 28 70 63 74 78 2c 20 6e 2c 20 28  pf[0](pctx, n, (
1490: 76 6f 69 64 20 2a 2a 29 70 76 29 3b 0a 7d 0a 0a  void **)pv);.}..
14a0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74  void sqlite3_int
14b0: 65 72 6f 70 5f 73 74 65 70 28 73 71 6c 69 74 65  erop_step(sqlite
14c0: 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c  3_context *pctx,
14d0: 20 69 6e 74 20 6e 2c 20 73 71 6c 69 74 65 33 5f   int n, sqlite3_
14e0: 76 61 6c 75 65 20 2a 2a 70 76 29 0a 7b 0a 20 20  value **pv).{.  
14f0: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a  SQLITEUSERFUNC *
1500: 70 66 20 3d 20 28 53 51 4c 49 54 45 55 53 45 52  pf = (SQLITEUSER
1510: 46 55 4e 43 20 2a 29 73 71 6c 69 74 65 33 5f 75  FUNC *)sqlite3_u
1520: 73 65 72 5f 64 61 74 61 28 70 63 74 78 29 3b 0a  ser_data(pctx);.
1530: 20 20 70 66 5b 31 5d 28 70 63 74 78 2c 20 6e 2c    pf[1](pctx, n,
1540: 20 28 76 6f 69 64 20 2a 2a 29 70 76 29 3b 0a 7d   (void **)pv);.}
1550: 0a 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69  ..void sqlite3_i
1560: 6e 74 65 72 6f 70 5f 66 69 6e 61 6c 28 73 71 6c  nterop_final(sql
1570: 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63  ite3_context *pc
1580: 74 78 29 0a 7b 0a 20 20 53 51 4c 49 54 45 55 53  tx).{.  SQLITEUS
1590: 45 52 46 55 4e 43 20 2a 70 66 20 3d 20 28 53 51  ERFUNC *pf = (SQ
15a0: 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a 29 73  LITEUSERFUNC *)s
15b0: 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61  qlite3_user_data
15c0: 28 70 63 74 78 29 3b 0a 20 20 70 66 5b 32 5d 28  (pctx);.  pf[2](
15d0: 70 63 74 78 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a  pctx, 0, 0);.}..
15e0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
15f0: 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64  port) void __std
1600: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 73 6c 65  call sqlite3_sle
1610: 65 70 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 6d  ep_interop(int m
1620: 69 6c 6c 69 73 65 63 6f 6e 64 73 29 0a 7b 0a 20  illiseconds).{. 
1630: 20 53 6c 65 65 70 28 6d 69 6c 6c 69 73 65 63 6f   Sleep(milliseco
1640: 6e 64 73 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  nds);.}..__decls
1650: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
1660: 6e 74 20 73 71 6c 69 74 65 33 5f 65 6e 63 72 79  nt sqlite3_encry
1670: 70 74 66 69 6c 65 28 63 6f 6e 73 74 20 77 63 68  ptfile(const wch
1680: 61 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e 61  ar_t *pwszFilena
1690: 6d 65 29 0a 7b 0a 20 20 48 4d 4f 44 55 4c 45 20  me).{.  HMODULE 
16a0: 68 4d 6f 64 20 3d 20 4c 6f 61 64 4c 69 62 72 61  hMod = LoadLibra
16b0: 72 79 28 5f 54 28 22 41 44 56 41 50 49 33 32 22  ry(_T("ADVAPI32"
16c0: 29 29 3b 0a 20 20 45 4e 43 52 59 50 54 46 49 4c  ));.  ENCRYPTFIL
16d0: 45 57 20 70 66 75 6e 63 3b 0a 20 20 69 6e 74 20  EW pfunc;.  int 
16e0: 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f 64 20 3d  n;..  if (hMod =
16f0: 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20 20 20  = NULL).  {.    
1700: 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45 52 52  SetLastError(ERR
1710: 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44  OR_NOT_SUPPORTED
1720: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 30 3b  );.    return 0;
1730: 0a 20 20 7d 0a 20 20 0a 20 20 70 66 75 6e 63 20  .  }.  .  pfunc 
1740: 3d 20 28 45 4e 43 52 59 50 54 46 49 4c 45 57 29  = (ENCRYPTFILEW)
1750: 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 68  GetProcAddress(h
1760: 4d 6f 64 2c 20 5f 54 28 22 45 6e 63 72 79 70 74  Mod, _T("Encrypt
1770: 46 69 6c 65 57 22 29 29 3b 0a 20 20 69 66 20 28  FileW"));.  if (
1780: 70 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20  pfunc == NULL). 
1790: 20 7b 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72   {.    SetLastEr
17a0: 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55  ror(ERROR_NOT_SU
17b0: 50 50 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65  PPORTED);.    re
17c0: 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e  turn 0;.  }..  n
17d0: 20 3d 20 70 66 75 6e 63 28 70 77 73 7a 46 69 6c   = pfunc(pwszFil
17e0: 65 6e 61 6d 65 29 3b 0a 0a 20 20 46 72 65 65 4c  ename);..  FreeL
17f0: 69 62 72 61 72 79 28 68 4d 6f 64 29 3b 0a 0a 20  ibrary(hMod);.. 
1800: 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f   return n;.}..__
1810: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
1820: 72 74 29 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  rt) int sqlite3_
1830: 64 65 63 72 79 70 74 66 69 6c 65 28 63 6f 6e 73  decryptfile(cons
1840: 74 20 77 63 68 61 72 5f 74 20 2a 70 77 73 7a 46  t wchar_t *pwszF
1850: 69 6c 65 6e 61 6d 65 29 0a 7b 0a 20 20 48 4d 4f  ilename).{.  HMO
1860: 44 55 4c 45 20 68 4d 6f 64 20 3d 20 4c 6f 61 64  DULE hMod = Load
1870: 4c 69 62 72 61 72 79 28 5f 54 28 22 41 44 56 41  Library(_T("ADVA
1880: 50 49 33 32 22 29 29 3b 0a 20 20 44 45 43 52 59  PI32"));.  DECRY
1890: 50 54 46 49 4c 45 57 20 70 66 75 6e 63 3b 0a 20  PTFILEW pfunc;. 
18a0: 20 69 6e 74 20 6e 3b 0a 0a 20 20 69 66 20 28 68   int n;..  if (h
18b0: 4d 6f 64 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b  Mod == NULL).  {
18c0: 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f  .    SetLastErro
18d0: 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50  r(ERROR_NOT_SUPP
18e0: 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75  ORTED);.    retu
18f0: 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 70 66 75  rn 0;.  }..  pfu
1900: 6e 63 20 3d 20 28 44 45 43 52 59 50 54 46 49 4c  nc = (DECRYPTFIL
1910: 45 57 29 47 65 74 50 72 6f 63 41 64 64 72 65 73  EW)GetProcAddres
1920: 73 28 68 4d 6f 64 2c 20 5f 54 28 22 44 65 63 72  s(hMod, _T("Decr
1930: 79 70 74 46 69 6c 65 57 22 29 29 3b 0a 20 20 69  yptFileW"));.  i
1940: 66 20 28 70 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c  f (pfunc == NULL
1950: 29 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c 61 73  ).  {.    SetLas
1960: 74 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54  tError(ERROR_NOT
1970: 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a 20 20 20  _SUPPORTED);.   
1980: 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a   return 0;.  }..
1990: 20 20 6e 20 3d 20 70 66 75 6e 63 28 70 77 73 7a    n = pfunc(pwsz
19a0: 46 69 6c 65 6e 61 6d 65 2c 20 30 29 3b 0a 0a 20  Filename, 0);.. 
19b0: 20 46 72 65 65 4c 69 62 72 61 72 79 28 68 4d 6f   FreeLibrary(hMo
19c0: 64 29 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e 3b  d);..  return n;
19d0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
19e0: 6c 6c 65 78 70 6f 72 74 29 20 75 6e 73 69 67 6e  llexport) unsign
19f0: 65 64 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  ed long sqlite3_
1a00: 65 6e 63 72 79 70 74 65 64 73 74 61 74 75 73 28  encryptedstatus(
1a10: 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20 2a 70  const wchar_t *p
1a20: 77 73 7a 46 69 6c 65 6e 61 6d 65 2c 20 75 6e 73  wszFilename, uns
1a30: 69 67 6e 65 64 20 6c 6f 6e 67 20 2a 70 64 77 53  igned long *pdwS
1a40: 74 61 74 75 73 29 0a 7b 0a 20 20 48 4d 4f 44 55  tatus).{.  HMODU
1a50: 4c 45 20 68 4d 6f 64 20 3d 20 4c 6f 61 64 4c 69  LE hMod = LoadLi
1a60: 62 72 61 72 79 28 5f 54 28 22 41 44 56 41 50 49  brary(_T("ADVAPI
1a70: 33 32 22 29 29 3b 0a 20 20 45 4e 43 52 59 50 54  32"));.  ENCRYPT
1a80: 45 44 53 54 41 54 55 53 57 20 70 66 75 6e 63 3b  EDSTATUSW pfunc;
1a90: 0a 20 20 69 6e 74 20 6e 3b 0a 0a 20 20 69 66 20  .  int n;..  if 
1aa0: 28 68 4d 6f 64 20 3d 3d 20 4e 55 4c 4c 29 0a 20  (hMod == NULL). 
1ab0: 20 7b 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72   {.    SetLastEr
1ac0: 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55  ror(ERROR_NOT_SU
1ad0: 50 50 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65  PPORTED);.    re
1ae0: 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 70  turn 0;.  }..  p
1af0: 66 75 6e 63 20 3d 20 28 45 4e 43 52 59 50 54 45  func = (ENCRYPTE
1b00: 44 53 54 41 54 55 53 57 29 47 65 74 50 72 6f 63  DSTATUSW)GetProc
1b10: 41 64 64 72 65 73 73 28 68 4d 6f 64 2c 20 5f 54  Address(hMod, _T
1b20: 28 22 46 69 6c 65 45 6e 63 72 79 70 74 69 6f 6e  ("FileEncryption
1b30: 53 74 61 74 75 73 57 22 29 29 3b 0a 20 20 69 66  StatusW"));.  if
1b40: 20 28 70 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29   (pfunc == NULL)
1b50: 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c 61 73 74  .  {.    SetLast
1b60: 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f  Error(ERROR_NOT_
1b70: 53 55 50 50 4f 52 54 45 44 29 3b 0a 20 20 20 20  SUPPORTED);.    
1b80: 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20  return 0;.  }.. 
1b90: 20 6e 20 3d 20 70 66 75 6e 63 28 70 77 73 7a 46   n = pfunc(pwszF
1ba0: 69 6c 65 6e 61 6d 65 2c 20 70 64 77 53 74 61 74  ilename, pdwStat
1bb0: 75 73 29 3b 0a 0a 20 20 46 72 65 65 4c 69 62 72  us);..  FreeLibr
1bc0: 61 72 79 28 68 4d 6f 64 29 3b 0a 0a 20 20 72 65  ary(hMod);..  re
1bd0: 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 69 6e 74 20 53  turn n;.}..int S
1be0: 65 74 43 6f 6d 70 72 65 73 73 69 6f 6e 28 63 6f  etCompression(co
1bf0: 6e 73 74 20 77 63 68 61 72 5f 74 20 2a 70 77 73  nst wchar_t *pws
1c00: 7a 46 69 6c 65 6e 61 6d 65 2c 20 75 6e 73 69 67  zFilename, unsig
1c10: 6e 65 64 20 73 68 6f 72 74 20 75 66 4c 65 76 65  ned short ufLeve
1c20: 6c 29 0a 7b 0a 23 69 66 64 65 66 20 46 53 43 54  l).{.#ifdef FSCT
1c30: 4c 5f 53 45 54 5f 43 4f 4d 50 52 45 53 53 49 4f  L_SET_COMPRESSIO
1c40: 4e 0a 20 20 48 4d 4f 44 55 4c 45 20 68 4d 6f 64  N.  HMODULE hMod
1c50: 20 3d 20 47 65 74 4d 6f 64 75 6c 65 48 61 6e 64   = GetModuleHand
1c60: 6c 65 28 5f 54 28 22 4b 45 52 4e 45 4c 33 32 22  le(_T("KERNEL32"
1c70: 29 29 3b 0a 20 20 43 52 45 41 54 45 46 49 4c 45  ));.  CREATEFILE
1c80: 57 20 70 66 75 6e 63 3b 0a 20 20 48 41 4e 44 4c  W pfunc;.  HANDL
1c90: 45 20 68 46 69 6c 65 3b 0a 20 20 75 6e 73 69 67  E hFile;.  unsig
1ca0: 6e 65 64 20 6c 6f 6e 67 20 64 77 20 3d 20 30 3b  ned long dw = 0;
1cb0: 0a 20 20 69 6e 74 20 6e 3b 0a 0a 20 20 69 66 20  .  int n;..  if 
1cc0: 28 68 4d 6f 64 20 3d 3d 20 4e 55 4c 4c 29 0a 20  (hMod == NULL). 
1cd0: 20 7b 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72   {.    SetLastEr
1ce0: 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55  ror(ERROR_NOT_SU
1cf0: 50 50 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65  PPORTED);.    re
1d00: 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 70  turn 0;.  }..  p
1d10: 66 75 6e 63 20 3d 20 28 43 52 45 41 54 45 46 49  func = (CREATEFI
1d20: 4c 45 57 29 47 65 74 50 72 6f 63 41 64 64 72 65  LEW)GetProcAddre
1d30: 73 73 28 68 4d 6f 64 2c 20 5f 54 28 22 43 72 65  ss(hMod, _T("Cre
1d40: 61 74 65 46 69 6c 65 57 22 29 29 3b 0a 20 20 69  ateFileW"));.  i
1d50: 66 20 28 70 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c  f (pfunc == NULL
1d60: 29 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c 61 73  ).  {.    SetLas
1d70: 74 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54  tError(ERROR_NOT
1d80: 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a 20 20 20  _SUPPORTED);.   
1d90: 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a   return 0;.  }..
1da0: 20 20 68 46 69 6c 65 20 3d 20 70 66 75 6e 63 28    hFile = pfunc(
1db0: 70 77 73 7a 46 69 6c 65 6e 61 6d 65 2c 20 47 45  pwszFilename, GE
1dc0: 4e 45 52 49 43 5f 52 45 41 44 7c 47 45 4e 45 52  NERIC_READ|GENER
1dd0: 49 43 5f 57 52 49 54 45 2c 20 30 2c 20 4e 55 4c  IC_WRITE, 0, NUL
1de0: 4c 2c 20 4f 50 45 4e 5f 45 58 49 53 54 49 4e 47  L, OPEN_EXISTING
1df0: 2c 20 46 49 4c 45 5f 41 54 54 52 49 42 55 54 45  , FILE_ATTRIBUTE
1e00: 5f 4e 4f 52 4d 41 4c 2c 20 4e 55 4c 4c 29 3b 0a  _NORMAL, NULL);.
1e10: 20 20 69 66 20 28 68 46 69 6c 65 20 3d 3d 20 4e    if (hFile == N
1e20: 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20  ULL).    return 
1e30: 30 3b 0a 0a 20 20 6e 20 3d 20 44 65 76 69 63 65  0;..  n = Device
1e40: 49 6f 43 6f 6e 74 72 6f 6c 28 68 46 69 6c 65 2c  IoControl(hFile,
1e50: 20 46 53 43 54 4c 5f 53 45 54 5f 43 4f 4d 50 52   FSCTL_SET_COMPR
1e60: 45 53 53 49 4f 4e 2c 20 26 75 66 4c 65 76 65 6c  ESSION, &ufLevel
1e70: 2c 20 73 69 7a 65 6f 66 28 75 66 4c 65 76 65 6c  , sizeof(ufLevel
1e80: 29 2c 20 4e 55 4c 4c 2c 20 30 2c 20 26 64 77 2c  ), NULL, 0, &dw,
1e90: 20 4e 55 4c 4c 29 3b 0a 0a 20 20 43 6c 6f 73 65   NULL);..  Close
1ea0: 48 61 6e 64 6c 65 28 68 46 69 6c 65 29 3b 0a 0a  Handle(hFile);..
1eb0: 20 20 72 65 74 75 72 6e 20 6e 3b 0a 23 65 6c 73    return n;.#els
1ec0: 65 0a 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72  e.  SetLastError
1ed0: 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f  (ERROR_NOT_SUPPO
1ee0: 52 54 45 44 29 3b 0a 20 20 72 65 74 75 72 6e 20  RTED);.  return 
1ef0: 30 3b 0a 23 65 6e 64 69 66 0a 7d 0a 0a 5f 5f 64  0;.#endif.}..__d
1f00: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
1f10: 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c  t) int __stdcall
1f20: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 72 65 73   sqlite3_compres
1f30: 73 66 69 6c 65 28 63 6f 6e 73 74 20 77 63 68 61  sfile(const wcha
1f40: 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e 61 6d  r_t *pwszFilenam
1f50: 65 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 53 65  e).{.  return Se
1f60: 74 43 6f 6d 70 72 65 73 73 69 6f 6e 28 70 77 73  tCompression(pws
1f70: 7a 46 69 6c 65 6e 61 6d 65 2c 20 43 4f 4d 50 52  zFilename, COMPR
1f80: 45 53 53 49 4f 4e 5f 46 4f 52 4d 41 54 5f 44 45  ESSION_FORMAT_DE
1f90: 46 41 55 4c 54 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  FAULT);.}..__dec
1fa0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
1fb0: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
1fc0: 71 6c 69 74 65 33 5f 64 65 63 6f 6d 70 72 65 73  qlite3_decompres
1fd0: 73 66 69 6c 65 28 63 6f 6e 73 74 20 77 63 68 61  sfile(const wcha
1fe0: 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e 61 6d  r_t *pwszFilenam
1ff0: 65 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 53 65  e).{.  return Se
2000: 74 43 6f 6d 70 72 65 73 73 69 6f 6e 28 70 77 73  tCompression(pws
2010: 7a 46 69 6c 65 6e 61 6d 65 2c 20 43 4f 4d 50 52  zFilename, COMPR
2020: 45 53 53 49 4f 4e 5f 46 4f 52 4d 41 54 5f 4e 4f  ESSION_FORMAT_NO
2030: 4e 45 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  NE);.}..__declsp
2040: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
2050: 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  id __stdcall sql
2060: 69 74 65 33 5f 66 75 6e 63 74 69 6f 6e 5f 66 72  ite3_function_fr
2070: 65 65 5f 63 61 6c 6c 62 61 63 6b 63 6f 6f 6b 69  ee_callbackcooki
2080: 65 28 76 6f 69 64 20 2a 70 43 6f 6f 6b 69 65 29  e(void *pCookie)
2090: 0a 7b 0a 20 20 69 66 20 28 70 43 6f 6f 6b 69 65  .{.  if (pCookie
20a0: 29 0a 20 20 20 20 66 72 65 65 28 70 43 6f 6f 6b  ).    free(pCook
20b0: 69 65 29 3b 0a 7d 0a 0a 2f 2f 20 73 71 6c 69 74  ie);.}..// sqlit
20c0: 65 33 20 77 72 61 70 70 65 72 73 0a 5f 5f 64 65  e3 wrappers.__de
20d0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
20e0: 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20 5f  ) const char * _
20f0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
2100: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 69 6e 74 65  _libversion_inte
2110: 72 6f 70 28 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  rop(int *plen).{
2120: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76  .  const char *v
2130: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 6c 69 62  al = sqlite3_lib
2140: 76 65 72 73 69 6f 6e 28 29 3b 0a 20 20 2a 70 6c  version();.  *pl
2150: 65 6e 20 3d 20 28 76 61 6c 20 21 3d 20 30 29 20  en = (val != 0) 
2160: 3f 20 73 74 72 6c 65 6e 28 76 61 6c 29 20 3a 20  ? strlen(val) : 
2170: 30 3b 0a 0a 20 20 72 65 74 75 72 6e 20 76 61 6c  0;..  return val
2180: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
2190: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
21a0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
21b0: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
21c0: 65 72 5f 69 6e 74 65 72 6f 70 28 76 6f 69 64 29  er_interop(void)
21d0: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
21e0: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
21f0: 75 6d 62 65 72 28 29 3b 0a 7d 0a 0a 5f 5f 64 65  umber();.}..__de
2200: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
2210: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
2220: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e  sqlite3_close_in
2230: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64  terop(sqlite3 *d
2240: 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  b).{.  return sq
2250: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 64 62 29 3b  lite3_close(db);
2260: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2270: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
2280: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2290: 65 78 65 63 5f 69 6e 74 65 72 6f 70 28 73 71 6c  exec_interop(sql
22a0: 69 74 65 33 20 2a 64 62 2c 20 63 6f 6e 73 74 20  ite3 *db, const 
22b0: 63 68 61 72 20 2a 73 71 6c 2c 20 73 71 6c 69 74  char *sql, sqlit
22c0: 65 33 5f 63 61 6c 6c 62 61 63 6b 20 63 62 2c 20  e3_callback cb, 
22d0: 76 6f 69 64 20 2a 70 76 2c 20 63 68 61 72 20 2a  void *pv, char *
22e0: 2a 65 72 72 6d 73 67 2c 20 69 6e 74 20 2a 70 6c  *errmsg, int *pl
22f0: 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20  en).{.  int n = 
2300: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 64 62 2c  sqlite3_exec(db,
2310: 20 73 71 6c 2c 20 63 62 2c 20 70 76 2c 20 65 72   sql, cb, pv, er
2320: 72 6d 73 67 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d  rmsg);.  *plen =
2330: 20 28 2a 65 72 72 6d 73 67 20 21 3d 20 30 29 20   (*errmsg != 0) 
2340: 3f 20 73 74 72 6c 65 6e 28 2a 65 72 72 6d 73 67  ? strlen(*errmsg
2350: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
2360: 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  n;.}..__declspec
2370: 28 64 6c 6c 65 78 70 6f 72 74 29 20 73 71 6c 69  (dllexport) sqli
2380: 74 65 5f 69 6e 74 36 34 20 5f 5f 73 74 64 63 61  te_int64 __stdca
2390: 6c 6c 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ll sqlite3_last_
23a0: 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74  insert_rowid_int
23b0: 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62  erop(sqlite3 *db
23c0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
23d0: 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
23e0: 5f 72 6f 77 69 64 28 64 62 29 3b 0a 7d 0a 0a 5f  _rowid(db);.}.._
23f0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2400: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
2410: 6c 6c 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  ll sqlite3_chang
2420: 65 73 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  es_interop(sqlit
2430: 65 33 20 2a 64 62 29 0a 7b 0a 20 20 72 65 74 75  e3 *db).{.  retu
2440: 72 6e 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  rn sqlite3_chang
2450: 65 73 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  es(db);.}..__dec
2460: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
2470: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
2480: 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
2490: 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 73 71 6c  nges_interop(sql
24a0: 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20 20 72 65  ite3 *db).{.  re
24b0: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 74 6f 74  turn sqlite3_tot
24c0: 61 6c 5f 63 68 61 6e 67 65 73 28 64 62 29 3b 0a  al_changes(db);.
24d0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
24e0: 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f  lexport) void __
24f0: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2500: 69 6e 74 65 72 72 75 70 74 5f 69 6e 74 65 72 6f  interrupt_intero
2510: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b  p(sqlite3 *db).{
2520: 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  .  sqlite3_inter
2530: 72 75 70 74 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64  rupt(db);.}..__d
2540: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
2550: 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c  t) int __stdcall
2560: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
2570: 65 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20  e_interop(const 
2580: 63 68 61 72 20 2a 73 71 6c 29 0a 7b 0a 20 20 72  char *sql).{.  r
2590: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f  eturn sqlite3_co
25a0: 6d 70 6c 65 74 65 28 73 71 6c 29 3b 0a 7d 0a 0a  mplete(sql);.}..
25b0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
25c0: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
25d0: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  all sqlite3_comp
25e0: 6c 65 74 65 31 36 5f 69 6e 74 65 72 6f 70 28 63  lete16_interop(c
25f0: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 29 0a  onst void *sql).
2600: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
2610: 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 73 71  e3_complete16(sq
2620: 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  l);.}..__declspe
2630: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
2640: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
2650: 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 5f  e3_busy_handler_
2660: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20  interop(sqlite3 
2670: 2a 64 62 2c 20 69 6e 74 28 2a 63 62 29 28 76 6f  *db, int(*cb)(vo
2680: 69 64 20 2a 2c 20 69 6e 74 29 2c 20 76 6f 69 64  id *, int), void
2690: 20 2a 70 76 29 0a 7b 0a 20 20 72 65 74 75 72 6e   *pv).{.  return
26a0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
26b0: 6e 64 6c 65 72 28 64 62 2c 20 63 62 2c 20 70 76  ndler(db, cb, pv
26c0: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
26d0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
26e0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
26f0: 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 5f 69  3_busy_timeout_i
2700: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a  nterop(sqlite3 *
2710: 64 62 2c 20 69 6e 74 20 6d 73 29 0a 7b 0a 20 20  db, int ms).{.  
2720: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62  return sqlite3_b
2730: 75 73 79 5f 74 69 6d 65 6f 75 74 28 64 62 2c 20  usy_timeout(db, 
2740: 6d 73 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ms);.}..__declsp
2750: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
2760: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
2770: 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 5f 69 6e  te3_get_table_in
2780: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64  terop(sqlite3 *d
2790: 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  b, const char *s
27a0: 71 6c 2c 20 63 68 61 72 20 2a 2a 2a 72 65 73 75  ql, char ***resu
27b0: 6c 74 70 2c 20 69 6e 74 20 2a 6e 72 6f 77 2c 20  ltp, int *nrow, 
27c0: 69 6e 74 20 2a 6e 63 6f 6c 75 6d 6e 2c 20 63 68  int *ncolumn, ch
27d0: 61 72 20 2a 2a 65 72 72 6d 73 67 2c 20 69 6e 74  ar **errmsg, int
27e0: 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69 6e 74 20   *plen).{.  int 
27f0: 6e 20 3d 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  n = sqlite3_get_
2800: 74 61 62 6c 65 28 64 62 2c 20 73 71 6c 2c 20 72  table(db, sql, r
2810: 65 73 75 6c 74 70 2c 20 6e 72 6f 77 2c 20 6e 63  esultp, nrow, nc
2820: 6f 6c 75 6d 6e 2c 20 65 72 72 6d 73 67 29 3b 0a  olumn, errmsg);.
2830: 20 20 2a 70 6c 65 6e 20 3d 20 28 2a 65 72 72 6d    *plen = (*errm
2840: 73 67 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65  sg != 0) ? strle
2850: 6e 28 28 63 68 61 72 20 2a 29 2a 65 72 72 6d 73  n((char *)*errms
2860: 67 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e  g) : 0;.  return
2870: 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65   n;.}..__declspe
2880: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69  c(dllexport) voi
2890: 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  d __stdcall sqli
28a0: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 5f 69  te3_free_table_i
28b0: 6e 74 65 72 6f 70 28 63 68 61 72 20 2a 2a 72 65  nterop(char **re
28c0: 73 75 6c 74 29 0a 7b 0a 20 20 73 71 6c 69 74 65  sult).{.  sqlite
28d0: 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 72 65 73  3_free_table(res
28e0: 75 6c 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  ult);.}..__decls
28f0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76  pec(dllexport) v
2900: 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  oid __stdcall sq
2910: 6c 69 74 65 33 5f 66 72 65 65 5f 69 6e 74 65 72  lite3_free_inter
2920: 6f 70 28 63 68 61 72 20 2a 7a 29 0a 7b 0a 20 20  op(char *z).{.  
2930: 73 71 6c 69 74 65 33 5f 66 72 65 65 28 7a 29 3b  sqlite3_free(z);
2940: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2950: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
2960: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2970: 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 63 6f 6e  open_interop(con
2980: 73 74 20 63 68 61 72 2a 66 69 6c 65 6e 61 6d 65  st char*filename
2990: 2c 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 64 62  , sqlite3 **ppdb
29a0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
29b0: 69 74 65 33 5f 6f 70 65 6e 28 66 69 6c 65 6e 61  ite3_open(filena
29c0: 6d 65 2c 20 70 70 64 62 29 3b 0a 7d 0a 0a 5f 5f  me, ppdb);.}..__
29d0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
29e0: 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c  rt) int __stdcal
29f0: 6c 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  l sqlite3_open16
2a00: 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20 76  _interop(const v
2a10: 6f 69 64 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 73  oid *filename, s
2a20: 71 6c 69 74 65 33 20 2a 2a 70 70 64 62 29 0a 7b  qlite3 **ppdb).{
2a30: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
2a40: 33 5f 6f 70 65 6e 31 36 28 66 69 6c 65 6e 61 6d  3_open16(filenam
2a50: 65 2c 20 70 70 64 62 29 3b 0a 7d 0a 0a 5f 5f 64  e, ppdb);.}..__d
2a60: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
2a70: 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c  t) int __stdcall
2a80: 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
2a90: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
2aa0: 20 2a 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e   *db).{.  return
2ab0: 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
2ac0: 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  (db);.}..__decls
2ad0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
2ae0: 6f 6e 73 74 20 63 68 61 72 20 2a 20 5f 5f 73 74  onst char * __st
2af0: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 65 72  dcall sqlite3_er
2b00: 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 73 71 6c  rmsg_interop(sql
2b10: 69 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 2a 70  ite3 *db, int *p
2b20: 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 63  len).{.  const c
2b30: 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69  har *pval = sqli
2b40: 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29 3b 0a  te3_errmsg(db);.
2b50: 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20    *plen = (pval 
2b60: 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 70  != 0) ? strlen(p
2b70: 76 61 6c 29 20 3a 20 30 3b 0a 20 20 72 65 74 75  val) : 0;.  retu
2b80: 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65  rn pval;.}..__de
2b90: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
2ba0: 29 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 20 5f  ) const void * _
2bb0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
2bc0: 5f 65 72 72 6d 73 67 31 36 5f 69 6e 74 65 72 6f  _errmsg16_intero
2bd0: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 69  p(sqlite3 *db, i
2be0: 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f  nt *plen).{.  co
2bf0: 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20 3d  nst void *pval =
2c00: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31   sqlite3_errmsg1
2c10: 36 28 64 62 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d  6(db);.  *plen =
2c20: 20 28 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 77   (pval != 0) ? w
2c30: 63 73 6c 65 6e 28 28 77 63 68 61 72 5f 74 20 2a  cslen((wchar_t *
2c40: 29 70 76 61 6c 29 20 2a 20 73 69 7a 65 6f 66 28  )pval) * sizeof(
2c50: 77 63 68 61 72 5f 74 29 3a 20 30 3b 0a 20 20 72  wchar_t): 0;.  r
2c60: 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f  eturn pval;.}.._
2c70: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2c80: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
2c90: 6c 6c 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ll sqlite3_prepa
2ca0: 72 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  re_interop(sqlit
2cb0: 65 33 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68  e3 *db, const ch
2cc0: 61 72 20 2a 73 71 6c 2c 20 69 6e 74 20 6e 62 79  ar *sql, int nby
2cd0: 74 65 73 2c 20 73 71 6c 69 74 65 33 5f 73 74 6d  tes, sqlite3_stm
2ce0: 74 20 2a 2a 70 70 73 74 6d 74 2c 20 63 6f 6e 73  t **ppstmt, cons
2cf0: 74 20 63 68 61 72 20 2a 2a 70 7a 74 61 69 6c 2c  t char **pztail,
2d00: 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20   int *plen).{.  
2d10: 69 6e 74 20 6e 20 3d 20 73 71 6c 69 74 65 33 5f  int n = sqlite3_
2d20: 70 72 65 70 61 72 65 28 64 62 2c 20 73 71 6c 2c  prepare(db, sql,
2d30: 20 6e 62 79 74 65 73 2c 20 70 70 73 74 6d 74 2c   nbytes, ppstmt,
2d40: 20 70 7a 74 61 69 6c 29 3b 0a 20 20 2a 70 6c 65   pztail);.  *ple
2d50: 6e 20 3d 20 28 2a 70 7a 74 61 69 6c 20 21 3d 20  n = (*pztail != 
2d60: 30 29 20 3f 20 73 74 72 6c 65 6e 28 2a 70 7a 74  0) ? strlen(*pzt
2d70: 61 69 6c 29 20 3a 20 30 3b 0a 20 20 72 65 74 75  ail) : 0;.  retu
2d80: 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  rn n;.}..__decls
2d90: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
2da0: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
2db0: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 69  ite3_prepare16_i
2dc0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a  nterop(sqlite3 *
2dd0: 64 62 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  db, const void *
2de0: 73 71 6c 2c 20 69 6e 74 20 6e 63 68 61 72 73 2c  sql, int nchars,
2df0: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
2e00: 70 70 73 74 6d 74 2c 20 63 6f 6e 73 74 20 76 6f  ppstmt, const vo
2e10: 69 64 20 2a 2a 70 7a 74 61 69 6c 2c 20 69 6e 74  id **pztail, int
2e20: 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69 6e 74 20   *plen).{.  int 
2e30: 6e 20 3d 20 73 71 6c 69 74 65 33 5f 70 72 65 70  n = sqlite3_prep
2e40: 61 72 65 31 36 28 64 62 2c 20 73 71 6c 2c 20 6e  are16(db, sql, n
2e50: 63 68 61 72 73 20 2a 20 73 69 7a 65 6f 66 28 77  chars * sizeof(w
2e60: 63 68 61 72 5f 74 29 2c 20 70 70 73 74 6d 74 2c  char_t), ppstmt,
2e70: 20 70 7a 74 61 69 6c 29 3b 0a 20 20 2a 70 6c 65   pztail);.  *ple
2e80: 6e 20 3d 20 28 2a 70 7a 74 61 69 6c 20 21 3d 20  n = (*pztail != 
2e90: 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68  0) ? wcslen((wch
2ea0: 61 72 5f 74 20 2a 29 2a 70 7a 74 61 69 6c 29 20  ar_t *)*pztail) 
2eb0: 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74  * sizeof(wchar_t
2ec0: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
2ed0: 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  n;.}..__declspec
2ee0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
2ef0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
2f00: 33 5f 62 69 6e 64 5f 62 6c 6f 62 5f 69 6e 74 65  3_bind_blob_inte
2f10: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
2f20: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
2f30: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76  , const void *pv
2f40: 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 63  , int n, void(*c
2f50: 62 29 28 76 6f 69 64 2a 29 29 0a 7b 0a 20 20 72  b)(void*)).{.  r
2f60: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62 69  eturn sqlite3_bi
2f70: 6e 64 5f 62 6c 6f 62 28 73 74 6d 74 2c 20 69 43  nd_blob(stmt, iC
2f80: 6f 6c 2c 20 70 76 2c 20 6e 2c 20 63 62 29 3b 0a  ol, pv, n, cb);.
2f90: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
2fa0: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
2fb0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62  tdcall sqlite3_b
2fc0: 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ind_double_inter
2fd0: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
2fe0: 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c  *stmt, int iCol,
2ff0: 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a   double *val).{.
3000: 09 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f  .return sqlite3_
3010: 62 69 6e 64 5f 64 6f 75 62 6c 65 28 73 74 6d 74  bind_double(stmt
3020: 2c 69 43 6f 6c 2c 2a 76 61 6c 29 3b 0a 7d 0a 0a  ,iCol,*val);.}..
3030: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3040: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
3050: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  all sqlite3_bind
3060: 5f 69 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  _int_interop(sql
3070: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
3080: 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 76   int iCol, int v
3090: 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  al).{.  return s
30a0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28  qlite3_bind_int(
30b0: 73 74 6d 74 2c 20 69 43 6f 6c 2c 20 76 61 6c 29  stmt, iCol, val)
30c0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
30d0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
30e0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
30f0: 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65  _bind_int64_inte
3100: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
3110: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
3120: 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 2a  , sqlite_int64 *
3130: 76 61 6c 29 0a 7b 0a 09 72 65 74 75 72 6e 20 73  val).{..return s
3140: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
3150: 34 28 73 74 6d 74 2c 69 43 6f 6c 2c 2a 76 61 6c  4(stmt,iCol,*val
3160: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
3170: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
3180: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
3190: 33 5f 62 69 6e 64 5f 6e 75 6c 6c 5f 69 6e 74 65  3_bind_null_inte
31a0: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
31b0: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
31c0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
31d0: 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73  ite3_bind_null(s
31e0: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f  tmt, iCol);.}.._
31f0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
3200: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
3210: 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  ll sqlite3_bind_
3220: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  text_interop(sql
3230: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
3240: 20 69 6e 74 20 69 43 6f 6c 2c 20 63 6f 6e 73 74   int iCol, const
3250: 20 63 68 61 72 20 2a 76 61 6c 2c 20 69 6e 74 20   char *val, int 
3260: 6e 2c 20 76 6f 69 64 28 2a 63 62 29 28 76 6f 69  n, void(*cb)(voi
3270: 64 20 2a 29 29 0a 7b 0a 20 20 72 65 74 75 72 6e  d *)).{.  return
3280: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
3290: 78 74 28 73 74 6d 74 2c 20 69 43 6f 6c 2c 20 76  xt(stmt, iCol, v
32a0: 61 6c 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f  al, n, cb);.}.._
32b0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
32c0: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
32d0: 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  ll sqlite3_bind_
32e0: 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 73  text16_interop(s
32f0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
3300: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 63 6f 6e  t, int iCol, con
3310: 73 74 20 76 6f 69 64 20 2a 76 61 6c 2c 20 69 6e  st void *val, in
3320: 74 20 6e 2c 20 76 6f 69 64 28 2a 63 62 29 28 76  t n, void(*cb)(v
3330: 6f 69 64 20 2a 29 29 0a 7b 0a 20 20 72 65 74 75  oid *)).{.  retu
3340: 72 6e 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  rn sqlite3_bind_
3350: 74 65 78 74 31 36 28 73 74 6d 74 2c 20 69 43 6f  text16(stmt, iCo
3360: 6c 2c 20 76 61 6c 2c 20 6e 2c 20 63 62 29 3b 0a  l, val, n, cb);.
3370: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
3380: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
3390: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62  tdcall sqlite3_b
33a0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
33b0: 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  unt_interop(sqli
33c0: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a  te3_stmt *stmt).
33d0: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
33e0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
33f0: 72 5f 63 6f 75 6e 74 28 73 74 6d 74 29 3b 0a 7d  r_count(stmt);.}
3400: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
3410: 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 63 68  export) const ch
3420: 61 72 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73  ar * __stdcall s
3430: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
3440: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
3450: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
3460: 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c  *stmt, int iCol,
3470: 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20   int *plen).{.  
3480: 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76 61 6c  const char *pval
3490: 20 3d 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f   = sqlite3_bind_
34a0: 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73  parameter_name(s
34b0: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70  tmt, iCol);.  *p
34c0: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
34d0: 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29  ) ? strlen(pval)
34e0: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70   : 0;.  return p
34f0: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
3500: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
3510: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
3520: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
3530: 65 72 5f 69 6e 64 65 78 5f 69 6e 74 65 72 6f 70  er_index_interop
3540: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73  (sqlite3_stmt *s
3550: 74 6d 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  tmt, const char 
3560: 2a 7a 4e 61 6d 65 29 0a 7b 0a 20 20 72 65 74 75  *zName).{.  retu
3570: 72 6e 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  rn sqlite3_bind_
3580: 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
3590: 73 74 6d 74 2c 20 7a 4e 61 6d 65 29 3b 0a 7d 0a  stmt, zName);.}.
35a0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
35b0: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
35c0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c  call sqlite3_col
35d0: 75 6d 6e 5f 63 6f 75 6e 74 5f 69 6e 74 65 72 6f  umn_count_intero
35e0: 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  p(sqlite3_stmt *
35f0: 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75 72 6e  stmt).{.  return
3600: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3610: 63 6f 75 6e 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a  count(stmt);.}..
3620: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3630: 70 6f 72 74 29 20 63 6f 6e 73 74 20 63 68 61 72  port) const char
3640: 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c   * __stdcall sql
3650: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
3660: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
3670: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
3680: 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e   iCol, int *plen
3690: 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61 72  ).{.  const char
36a0: 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33   *pval = sqlite3
36b0: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 73 74 6d  _column_name(stm
36c0: 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65  t, iCol);.  *ple
36d0: 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30 29 20  n = (pval != 0) 
36e0: 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a  ? strlen(pval) :
36f0: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
3700: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
3710: 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73  (dllexport) cons
3720: 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63 61  t void * __stdca
3730: 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ll sqlite3_colum
3740: 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
3750: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73  (sqlite3_stmt *s
3760: 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 69  tmt, int iCol, i
3770: 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f  nt *plen).{.  co
3780: 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20 3d  nst void *pval =
3790: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
37a0: 6e 61 6d 65 31 36 28 73 74 6d 74 2c 20 69 43 6f  name16(stmt, iCo
37b0: 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70  l);.  *plen = (p
37c0: 76 61 6c 20 21 3d 20 30 29 20 3f 20 77 63 73 6c  val != 0) ? wcsl
37d0: 65 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 70 76  en((wchar_t *)pv
37e0: 61 6c 29 20 2a 20 73 69 7a 65 6f 66 28 77 63 68  al) * sizeof(wch
37f0: 61 72 5f 74 29 20 3a 20 30 3b 0a 20 20 72 65 74  ar_t) : 0;.  ret
3800: 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64  urn pval;.}..__d
3810: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
3820: 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20  t) const char * 
3830: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
3840: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
3850: 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  e_interop(sqlite
3860: 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e  3_stmt *stmt, in
3870: 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65  t iCol, int *ple
3880: 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61  n).{.  const cha
3890: 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65  r *pval = sqlite
38a0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
38b0: 65 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20  e(stmt, iCol);. 
38c0: 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21   *plen = (pval !
38d0: 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 70 76  = 0) ? strlen(pv
38e0: 61 6c 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72  al) : 0;.  retur
38f0: 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63  n pval;.}..__dec
3900: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
3910: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 20 5f 5f   const void * __
3920: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3930: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
3940: 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  6_interop(sqlite
3950: 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e  3_stmt *stmt, in
3960: 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65  t iCol, int *ple
3970: 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 76 6f 69  n).{.  const voi
3980: 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65  d *pval = sqlite
3990: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
39a0: 65 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  e16(stmt, iCol);
39b0: 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c  .  *plen = (pval
39c0: 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28   != 0) ? wcslen(
39d0: 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29  (wchar_t *)pval)
39e0: 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f   * sizeof(wchar_
39f0: 74 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e  t) : 0;.  return
3a00: 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c   pval;.}..__decl
3a10: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
3a20: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
3a30: 6c 69 74 65 33 5f 73 74 65 70 5f 69 6e 74 65 72  lite3_step_inter
3a40: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
3a50: 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75 72  *stmt).{.  retur
3a60: 6e 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 73  n sqlite3_step(s
3a70: 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  tmt);.}..__decls
3a80: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
3a90: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
3aa0: 69 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74 5f  ite3_data_count_
3ab0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
3ac0: 73 74 6d 74 20 2a 73 74 6d 74 29 0a 7b 0a 20 20  stmt *stmt).{.  
3ad0: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 64  return sqlite3_d
3ae0: 61 74 61 5f 63 6f 75 6e 74 28 73 74 6d 74 29 3b  ata_count(stmt);
3af0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3b00: 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20  llexport) const 
3b10: 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c  void * __stdcall
3b20: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3b30: 62 6c 6f 62 5f 69 6e 74 65 72 6f 70 28 73 71 6c  blob_interop(sql
3b40: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
3b50: 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72   int iCol).{.  r
3b60: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f  eturn sqlite3_co
3b70: 6c 75 6d 6e 5f 62 6c 6f 62 28 73 74 6d 74 2c 20  lumn_blob(stmt, 
3b80: 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  iCol);.}..__decl
3b90: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
3ba0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
3bb0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
3bc0: 65 73 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  es_interop(sqlit
3bd0: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69  e3_stmt *stmt, i
3be0: 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74  nt iCol).{.  ret
3bf0: 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  urn sqlite3_colu
3c00: 6d 6e 5f 62 79 74 65 73 28 73 74 6d 74 2c 20 69  mn_bytes(stmt, i
3c10: 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  Col);.}..__decls
3c20: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
3c30: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
3c40: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
3c50: 73 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  s16_interop(sqli
3c60: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20  te3_stmt *stmt, 
3c70: 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72 65  int iCol).{.  re
3c80: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6c  turn sqlite3_col
3c90: 75 6d 6e 5f 62 79 74 65 73 31 36 28 73 74 6d 74  umn_bytes16(stmt
3ca0: 2c 20 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  , iCol);.}..__de
3cb0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
3cc0: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
3cd0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3ce0: 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73  double_interop(s
3cf0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
3d00: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 64 6f 75  t, int iCol, dou
3d10: 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a 09 2a 76 61  ble *val).{..*va
3d20: 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  l = sqlite3_colu
3d30: 6d 6e 5f 64 6f 75 62 6c 65 28 73 74 6d 74 2c 69  mn_double(stmt,i
3d40: 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  Col);.}..__decls
3d50: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
3d60: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
3d70: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 5f  ite3_column_int_
3d80: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
3d90: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
3da0: 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e  iCol).{.  return
3db0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3dc0: 69 6e 74 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  int(stmt, iCol);
3dd0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3de0: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f  llexport) void _
3df0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3e00: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
3e10: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
3e20: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
3e30: 6f 6c 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  ol, sqlite_int64
3e40: 20 2a 76 61 6c 29 0a 7b 0a 09 2a 76 61 6c 20 3d   *val).{..*val =
3e50: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3e60: 69 6e 74 36 34 28 73 74 6d 74 2c 69 43 6f 6c 29  int64(stmt,iCol)
3e70: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3e80: 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74  dllexport) const
3e90: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a   unsigned char *
3ea0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
3eb0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69  e3_column_text_i
3ec0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
3ed0: 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69  tmt *stmt, int i
3ee0: 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a  Col, int *plen).
3ef0: 7b 0a 20 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e  {.  const unsign
3f00: 65 64 20 63 68 61 72 20 2a 70 76 61 6c 20 3d 20  ed char *pval = 
3f10: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
3f20: 65 78 74 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  ext(stmt, iCol);
3f30: 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c  .  *plen = (pval
3f40: 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28   != 0) ? strlen(
3f50: 28 63 68 61 72 20 2a 29 70 76 61 6c 29 20 3a 20  (char *)pval) : 
3f60: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
3f70: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3f80: 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74  dllexport) const
3f90: 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63 61 6c   void * __stdcal
3fa0: 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  l sqlite3_column
3fb0: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
3fc0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
3fd0: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e  mt, int iCol, in
3fe0: 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e  t *plen).{.  con
3ff0: 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20 3d 20  st void *pval = 
4000: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4010: 65 78 74 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c  ext16(stmt, iCol
4020: 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76  );.  *plen = (pv
4030: 61 6c 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65  al != 0) ? wcsle
4040: 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61  n((wchar_t *)pva
4050: 6c 29 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61  l) * sizeof(wcha
4060: 72 5f 74 29 3a 20 30 3b 0a 20 20 72 65 74 75 72  r_t): 0;.  retur
4070: 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63  n pval;.}..__dec
4080: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
4090: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
40a0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
40b0: 70 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  pe_interop(sqlit
40c0: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69  e3_stmt *stmt, i
40d0: 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74  nt iCol).{.  ret
40e0: 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  urn sqlite3_colu
40f0: 6d 6e 5f 74 79 70 65 28 73 74 6d 74 2c 20 69 43  mn_type(stmt, iC
4100: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
4110: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
4120: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
4130: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
4140: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
4150: 74 20 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74  t *stmt).{.  ret
4160: 75 72 6e 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  urn sqlite3_fina
4170: 6c 69 7a 65 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f  lize(stmt);.}.._
4180: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
4190: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
41a0: 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  ll sqlite3_reset
41b0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
41c0: 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a 7b 0a 20  _stmt *stmt).{. 
41d0: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
41e0: 72 65 73 65 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a  reset(stmt);.}..
41f0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
4200: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
4210: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 72 65 61  all sqlite3_crea
4220: 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65  te_function_inte
4230: 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 70 73 71  rop(sqlite3 *psq
4240: 6c 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  l, const char *z
4250: 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 69 6e  FunctionName, in
4260: 74 20 6e 41 72 67 2c 20 69 6e 74 20 65 54 65 78  t nArg, int eTex
4270: 74 52 65 70 2c 20 53 51 4c 49 54 45 55 53 45 52  tRep, SQLITEUSER
4280: 46 55 4e 43 20 66 75 6e 63 2c 20 53 51 4c 49 54  FUNC func, SQLIT
4290: 45 55 53 45 52 46 55 4e 43 20 66 75 6e 63 73 74  EUSERFUNC funcst
42a0: 65 70 2c 20 53 51 4c 49 54 45 55 53 45 52 46 55  ep, SQLITEUSERFU
42b0: 4e 43 20 66 75 6e 63 66 69 6e 61 6c 2c 20 76 6f  NC funcfinal, vo
42c0: 69 64 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b  id **ppCookie).{
42d0: 0a 20 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49  .  int n;.  SQLI
42e0: 54 45 55 53 45 52 46 55 4e 43 20 2a 70 20 3d 20  TEUSERFUNC *p = 
42f0: 28 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20  (SQLITEUSERFUNC 
4300: 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28  *)malloc(sizeof(
4310: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 29 20  SQLITEUSERFUNC) 
4320: 2a 20 33 29 3b 0a 0a 20 20 70 5b 30 5d 20 3d 20  * 3);..  p[0] = 
4330: 66 75 6e 63 3b 0a 20 20 70 5b 31 5d 20 3d 20 66  func;.  p[1] = f
4340: 75 6e 63 73 74 65 70 3b 0a 20 20 70 5b 32 5d 20  uncstep;.  p[2] 
4350: 3d 20 66 75 6e 63 66 69 6e 61 6c 3b 0a 0a 20 20  = funcfinal;..  
4360: 2a 70 70 43 6f 6f 6b 69 65 20 3d 20 30 3b 0a 0a  *ppCookie = 0;..
4370: 20 20 6e 20 3d 20 73 71 6c 69 74 65 33 5f 63 72    n = sqlite3_cr
4380: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 70 73  eate_function(ps
4390: 71 6c 2c 20 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d  ql, zFunctionNam
43a0: 65 2c 20 6e 41 72 67 2c 20 65 54 65 78 74 52 65  e, nArg, eTextRe
43b0: 70 2c 20 70 2c 20 28 66 75 6e 63 20 21 3d 20 30  p, p, (func != 0
43c0: 29 20 3f 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  ) ? sqlite3_inte
43d0: 72 6f 70 5f 66 75 6e 63 20 3a 20 30 2c 20 28 66  rop_func : 0, (f
43e0: 75 6e 63 73 74 65 70 20 21 3d 20 30 29 20 3f 20  uncstep != 0) ? 
43f0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
4400: 73 74 65 70 20 3a 20 30 2c 20 28 66 75 6e 63 66  step : 0, (funcf
4410: 69 6e 61 6c 20 21 3d 20 30 29 20 3f 20 73 71 6c  inal != 0) ? sql
4420: 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66 69 6e  ite3_interop_fin
4430: 61 6c 20 3a 20 30 29 3b 0a 20 20 69 66 20 28 6e  al : 0);.  if (n
4440: 20 21 3d 20 30 29 0a 20 20 20 20 66 72 65 65 28   != 0).    free(
4450: 70 29 3b 0a 20 20 65 6c 73 65 0a 20 20 20 20 2a  p);.  else.    *
4460: 70 70 43 6f 6f 6b 69 65 20 3d 20 70 3b 0a 0a 20  ppCookie = p;.. 
4470: 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f   return n;.}..__
4480: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
4490: 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c  rt) int __stdcal
44a0: 6c 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  l sqlite3_create
44b0: 5f 66 75 6e 63 74 69 6f 6e 31 36 5f 69 6e 74 65  _function16_inte
44c0: 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 70 73 71  rop(sqlite3 *psq
44d0: 6c 2c 20 76 6f 69 64 20 2a 7a 46 75 6e 63 74 69  l, void *zFuncti
44e0: 6f 6e 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  onName, int nArg
44f0: 2c 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20  , int eTextRep, 
4500: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66  SQLITEUSERFUNC f
4510: 75 6e 63 2c 20 53 51 4c 49 54 45 55 53 45 52 46  unc, SQLITEUSERF
4520: 55 4e 43 20 66 75 6e 63 73 74 65 70 2c 20 53 51  UNC funcstep, SQ
4530: 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66 75 6e  LITEUSERFUNC fun
4540: 63 66 69 6e 61 6c 2c 20 76 6f 69 64 20 2a 2a 70  cfinal, void **p
4550: 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69 6e 74  pCookie).{.  int
4560: 20 6e 3b 0a 20 20 53 51 4c 49 54 45 55 53 45 52   n;.  SQLITEUSER
4570: 46 55 4e 43 20 2a 70 20 3d 20 28 53 51 4c 49 54  FUNC *p = (SQLIT
4580: 45 55 53 45 52 46 55 4e 43 20 2a 29 6d 61 6c 6c  EUSERFUNC *)mall
4590: 6f 63 28 73 69 7a 65 6f 66 28 53 51 4c 49 54 45  oc(sizeof(SQLITE
45a0: 55 53 45 52 46 55 4e 43 29 20 2a 20 33 29 3b 0a  USERFUNC) * 3);.
45b0: 0a 20 20 70 5b 30 5d 20 3d 20 66 75 6e 63 3b 0a  .  p[0] = func;.
45c0: 20 20 70 5b 31 5d 20 3d 20 66 75 6e 63 73 74 65    p[1] = funcste
45d0: 70 3b 0a 20 20 70 5b 32 5d 20 3d 20 66 75 6e 63  p;.  p[2] = func
45e0: 66 69 6e 61 6c 3b 0a 0a 20 20 2a 70 70 43 6f 6f  final;..  *ppCoo
45f0: 6b 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20  kie = 0;..  n = 
4600: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
4610: 75 6e 63 74 69 6f 6e 31 36 28 70 73 71 6c 2c 20  unction16(psql, 
4620: 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e  zFunctionName, n
4630: 41 72 67 2c 20 65 54 65 78 74 52 65 70 2c 20 70  Arg, eTextRep, p
4640: 2c 20 28 66 75 6e 63 20 21 3d 20 30 29 20 3f 20  , (func != 0) ? 
4650: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
4660: 66 75 6e 63 20 3a 20 30 2c 20 28 66 75 6e 63 73  func : 0, (funcs
4670: 74 65 70 20 21 3d 20 30 29 20 3f 20 73 71 6c 69  tep != 0) ? sqli
4680: 74 65 33 5f 69 6e 74 65 72 6f 70 5f 73 74 65 70  te3_interop_step
4690: 20 3a 20 30 2c 20 28 66 75 6e 63 66 69 6e 61 6c   : 0, (funcfinal
46a0: 20 21 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33   != 0) ? sqlite3
46b0: 5f 69 6e 74 65 72 6f 70 5f 66 69 6e 61 6c 20 3a  _interop_final :
46c0: 20 30 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20   0);.  if (n != 
46d0: 30 29 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a  0).    free(p);.
46e0: 20 20 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f    else.    *ppCo
46f0: 6f 6b 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74  okie = p;..  ret
4700: 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  urn n;.}..__decl
4710: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
4720: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
4730: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
4740: 6c 61 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 73  lation_interop(s
4750: 71 6c 69 74 65 33 2a 20 64 62 2c 20 63 6f 6e 73  qlite3* db, cons
4760: 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69  t char *zName, i
4770: 6e 74 20 65 54 65 78 74 52 65 70 2c 20 76 6f 69  nt eTextRep, voi
4780: 64 2a 20 70 76 55 73 65 72 2c 20 53 51 4c 49 54  d* pvUser, SQLIT
4790: 45 43 4f 4c 4c 41 54 49 4f 4e 20 66 75 6e 63 2c  ECOLLATION func,
47a0: 20 76 6f 69 64 20 2a 2a 70 70 43 6f 6f 6b 69 65   void **ppCookie
47b0: 29 0a 7b 0a 20 20 69 6e 74 20 6e 3b 0a 20 20 53  ).{.  int n;.  S
47c0: 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a  QLITECOLLATION *
47d0: 70 20 3d 20 28 53 51 4c 49 54 45 43 4f 4c 4c 41  p = (SQLITECOLLA
47e0: 54 49 4f 4e 20 2a 29 6d 61 6c 6c 6f 63 28 73 69  TION *)malloc(si
47f0: 7a 65 6f 66 28 53 51 4c 49 54 45 43 4f 4c 4c 41  zeof(SQLITECOLLA
4800: 54 49 4f 4e 29 29 3b 0a 20 20 0a 20 20 70 5b 30  TION));.  .  p[0
4810: 5d 20 3d 20 66 75 6e 63 3b 0a 0a 20 20 2a 70 70  ] = func;..  *pp
4820: 43 6f 6f 6b 69 65 20 3d 20 30 3b 0a 0a 20 20 6e  Cookie = 0;..  n
4830: 20 3d 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74   = sqlite3_creat
4840: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 64 62 2c 20  e_collation(db, 
4850: 7a 4e 61 6d 65 2c 20 65 54 65 78 74 52 65 70 2c  zName, eTextRep,
4860: 20 70 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 65   p, sqlite3_inte
4870: 72 6f 70 5f 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e  rop_collationfun
4880: 63 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20 30  c);.  if (n != 0
4890: 29 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a 20  ).    free(p);. 
48a0: 20 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f 6f   else.    *ppCoo
48b0: 6b 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74 75  kie = p;..  retu
48c0: 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  rn n;.}..__decls
48d0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
48e0: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
48f0: 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
4900: 61 74 69 6f 6e 31 36 5f 69 6e 74 65 72 6f 70 28  ation16_interop(
4910: 73 71 6c 69 74 65 33 2a 20 64 62 2c 20 63 6f 6e  sqlite3* db, con
4920: 73 74 20 76 6f 69 64 20 2a 7a 4e 61 6d 65 2c 20  st void *zName, 
4930: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20 76 6f  int eTextRep, vo
4940: 69 64 2a 20 70 76 55 73 65 72 2c 20 53 51 4c 49  id* pvUser, SQLI
4950: 54 45 43 4f 4c 4c 41 54 49 4f 4e 20 66 75 6e 63  TECOLLATION func
4960: 2c 20 76 6f 69 64 20 2a 2a 70 70 43 6f 6f 6b 69  , void **ppCooki
4970: 65 29 0a 7b 0a 20 20 69 6e 74 20 6e 3b 0a 20 20  e).{.  int n;.  
4980: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20  SQLITECOLLATION 
4990: 2a 70 20 3d 20 28 53 51 4c 49 54 45 43 4f 4c 4c  *p = (SQLITECOLL
49a0: 41 54 49 4f 4e 20 2a 29 6d 61 6c 6c 6f 63 28 73  ATION *)malloc(s
49b0: 69 7a 65 6f 66 28 53 51 4c 49 54 45 43 4f 4c 4c  izeof(SQLITECOLL
49c0: 41 54 49 4f 4e 29 29 3b 0a 20 20 0a 20 20 70 5b  ATION));.  .  p[
49d0: 30 5d 20 3d 20 66 75 6e 63 3b 0a 0a 20 20 2a 70  0] = func;..  *p
49e0: 70 43 6f 6f 6b 69 65 20 3d 20 30 3b 0a 0a 20 20  pCookie = 0;..  
49f0: 6e 20 3d 20 73 71 6c 69 74 65 33 5f 63 72 65 61  n = sqlite3_crea
4a00: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 64  te_collation16(d
4a10: 62 2c 20 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  b, (const char *
4a20: 29 7a 4e 61 6d 65 2c 20 65 54 65 78 74 52 65 70  )zName, eTextRep
4a30: 2c 20 70 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  , p, sqlite3_int
4a40: 65 72 6f 70 5f 63 6f 6c 6c 61 74 69 6f 6e 66 75  erop_collationfu
4a50: 6e 63 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20  nc);.  if (n != 
4a60: 30 29 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a  0).    free(p);.
4a70: 20 20 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f    else.    *ppCo
4a80: 6f 6b 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74  okie = p;..  ret
4a90: 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  urn n;.}..__decl
4aa0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
4ab0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
4ac0: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
4ad0: 63 6f 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71  count_interop(sq
4ae0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70  lite3_context *p
4af0: 63 74 78 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  ctx).{.  return 
4b00: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
4b10: 65 5f 63 6f 75 6e 74 28 70 63 74 78 29 3b 0a 7d  e_count(pctx);.}
4b20: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
4b30: 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f  export) const vo
4b40: 69 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73  id * __stdcall s
4b50: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
4b60: 62 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  b_interop(sqlite
4b70: 33 5f 76 61 6c 75 65 20 2a 76 61 6c 29 0a 7b 0a  3_value *val).{.
4b80: 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33    return sqlite3
4b90: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 76 61 6c 29  _value_blob(val)
4ba0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
4bb0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
4bc0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
4bd0: 5f 76 61 6c 75 65 5f 62 79 74 65 73 5f 69 6e 74  _value_bytes_int
4be0: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c  erop(sqlite3_val
4bf0: 75 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74  ue *val).{.  ret
4c00: 75 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  urn sqlite3_valu
4c10: 65 5f 62 79 74 65 73 28 76 61 6c 29 3b 0a 7d 0a  e_bytes(val);.}.
4c20: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
4c30: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
4c40: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c  call sqlite3_val
4c50: 75 65 5f 62 79 74 65 73 31 36 5f 69 6e 74 65 72  ue_bytes16_inter
4c60: 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  op(sqlite3_value
4c70: 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72   *val).{.  retur
4c80: 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  n sqlite3_value_
4c90: 62 79 74 65 73 31 36 28 76 61 6c 29 3b 0a 7d 0a  bytes16(val);.}.
4ca0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
4cb0: 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74  xport) void __st
4cc0: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61  dcall sqlite3_va
4cd0: 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  lue_double_inter
4ce0: 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  op(sqlite3_value
4cf0: 20 2a 70 76 61 6c 2c 20 64 6f 75 62 6c 65 20 2a   *pval, double *
4d00: 76 61 6c 29 0a 7b 0a 20 20 2a 76 61 6c 20 3d 20  val).{.  *val = 
4d10: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
4d20: 75 62 6c 65 28 70 76 61 6c 29 3b 0a 7d 0a 0a 5f  uble(pval);.}.._
4d30: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
4d40: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
4d50: 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ll sqlite3_value
4d60: 5f 69 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  _int_interop(sql
4d70: 69 74 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c 29  ite3_value *val)
4d80: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
4d90: 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 76 61  te3_value_int(va
4da0: 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  l);.}..__declspe
4db0: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69  c(dllexport) voi
4dc0: 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  d __stdcall sqli
4dd0: 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f  te3_value_int64_
4de0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
4df0: 76 61 6c 75 65 20 2a 70 76 61 6c 2c 20 73 71 6c  value *pval, sql
4e00: 69 74 65 5f 69 6e 74 36 34 20 2a 76 61 6c 29 0a  ite_int64 *val).
4e10: 7b 0a 20 20 2a 76 61 6c 20 3d 20 73 71 6c 69 74  {.  *val = sqlit
4e20: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 70  e3_value_int64(p
4e30: 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  val);.}..__decls
4e40: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
4e50: 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68  onst unsigned ch
4e60: 61 72 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73  ar * __stdcall s
4e70: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
4e80: 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  t_interop(sqlite
4e90: 33 5f 76 61 6c 75 65 20 2a 76 61 6c 2c 20 69 6e  3_value *val, in
4ea0: 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e  t *plen).{.  con
4eb0: 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72  st unsigned char
4ec0: 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33   *pval = sqlite3
4ed0: 5f 76 61 6c 75 65 5f 74 65 78 74 28 76 61 6c 29  _value_text(val)
4ee0: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61  ;.  *plen = (pva
4ef0: 6c 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e  l != 0) ? strlen
4f00: 28 28 63 68 61 72 20 2a 29 70 76 61 6c 29 20 3a  ((char *)pval) :
4f10: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
4f20: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
4f30: 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73  (dllexport) cons
4f40: 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63 61  t void * __stdca
4f50: 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ll sqlite3_value
4f60: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
4f70: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 76  sqlite3_value *v
4f80: 61 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  al, int *plen).{
4f90: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70  .  const void *p
4fa0: 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 76 61  val = sqlite3_va
4fb0: 6c 75 65 5f 74 65 78 74 31 36 28 76 61 6c 29 3b  lue_text16(val);
4fc0: 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c  .  *plen = (pval
4fd0: 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28   != 0) ? wcslen(
4fe0: 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29  (wchar_t *)pval)
4ff0: 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f   * sizeof(wchar_
5000: 74 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e  t) : 0;.  return
5010: 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c   pval;.}..__decl
5020: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
5030: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
5040: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
5050: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
5060: 5f 76 61 6c 75 65 20 2a 76 61 6c 29 0a 7b 0a 20  _value *val).{. 
5070: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
5080: 76 61 6c 75 65 5f 74 79 70 65 28 76 61 6c 29 3b  value_type(val);
5090: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
50a0: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 2a  llexport) void *
50b0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
50c0: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
50d0: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  text_interop(sql
50e0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63  ite3_context *pc
50f0: 74 78 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 72  tx, int n).{.  r
5100: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 61 67  eturn sqlite3_ag
5110: 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28  gregate_context(
5120: 70 63 74 78 2c 20 6e 29 3b 0a 7d 0a 0a 5f 5f 64  pctx, n);.}..__d
5130: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
5140: 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c  t) void __stdcal
5150: 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  l sqlite3_result
5160: 5f 62 6c 6f 62 5f 69 6e 74 65 72 6f 70 28 73 71  _blob_interop(sq
5170: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63  lite3_context *c
5180: 74 78 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  tx, const void *
5190: 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28  pv, int n, void(
51a0: 2a 63 62 29 28 76 6f 69 64 20 2a 29 29 0a 7b 0a  *cb)(void *)).{.
51b0: 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
51c0: 5f 62 6c 6f 62 28 63 74 78 2c 20 70 76 2c 20 6e  _blob(ctx, pv, n
51d0: 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  , cb);.}..__decl
51e0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
51f0: 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73  void __stdcall s
5200: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
5210: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c  uble_interop(sql
5220: 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63  ite3_context *pc
5230: 74 78 2c 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29  tx, double *val)
5240: 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73  .{.  sqlite3_res
5250: 75 6c 74 5f 64 6f 75 62 6c 65 28 70 63 74 78 2c  ult_double(pctx,
5260: 20 2a 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63   *val);.}..__dec
5270: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
5280: 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20   void __stdcall 
5290: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
52a0: 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  nt_interop(sqlit
52b0: 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78  e3_context *pctx
52c0: 2c 20 69 6e 74 20 76 61 6c 29 0a 7b 0a 20 20 73  , int val).{.  s
52d0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
52e0: 74 28 70 63 74 78 2c 20 76 61 6c 29 3b 0a 7d 0a  t(pctx, val);.}.
52f0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
5300: 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74  xport) void __st
5310: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65  dcall sqlite3_re
5320: 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
5330: 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  op(sqlite3_conte
5340: 78 74 20 2a 70 63 74 78 2c 20 73 71 6c 69 74 65  xt *pctx, sqlite
5350: 5f 69 6e 74 36 34 20 2a 76 61 6c 29 0a 7b 0a 20  _int64 *val).{. 
5360: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
5370: 69 6e 74 36 34 28 70 63 74 78 2c 20 2a 76 61 6c  int64(pctx, *val
5380: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
5390: 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64  (dllexport) void
53a0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
53b0: 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 5f 69  e3_result_null_i
53c0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63  nterop(sqlite3_c
53d0: 6f 6e 74 65 78 74 20 2a 70 63 74 78 29 0a 7b 0a  ontext *pctx).{.
53e0: 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
53f0: 5f 6e 75 6c 6c 28 70 63 74 78 29 3b 0a 7d 0a 0a  _null(pctx);.}..
5400: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
5410: 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64  port) void __std
5420: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 73  call sqlite3_res
5430: 75 6c 74 5f 65 72 72 6f 72 5f 69 6e 74 65 72 6f  ult_error_intero
5440: 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  p(sqlite3_contex
5450: 74 20 2a 63 74 78 2c 20 63 6f 6e 73 74 20 63 68  t *ctx, const ch
5460: 61 72 20 2a 70 76 2c 20 69 6e 74 20 6e 29 0a 7b  ar *pv, int n).{
5470: 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  .  sqlite3_resul
5480: 74 5f 65 72 72 6f 72 28 63 74 78 2c 20 70 76 2c  t_error(ctx, pv,
5490: 20 6e 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70   n);.}..__declsp
54a0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
54b0: 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  id __stdcall sql
54c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
54d0: 72 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  r16_interop(sqli
54e0: 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78  te3_context *ctx
54f0: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76  , const void *pv
5500: 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 73 71 6c  , int n).{.  sql
5510: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
5520: 72 31 36 28 63 74 78 2c 20 70 76 2c 20 6e 29 3b  r16(ctx, pv, n);
5530: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
5540: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f  llexport) void _
5550: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
5560: 5f 72 65 73 75 6c 74 5f 74 65 78 74 5f 69 6e 74  _result_text_int
5570: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e  erop(sqlite3_con
5580: 74 65 78 74 20 2a 63 74 78 2c 20 63 6f 6e 73 74  text *ctx, const
5590: 20 63 68 61 72 20 2a 70 76 2c 20 69 6e 74 20 6e   char *pv, int n
55a0: 2c 20 76 6f 69 64 28 2a 63 62 29 28 76 6f 69 64  , void(*cb)(void
55b0: 20 2a 29 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33   *)).{.  sqlite3
55c0: 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 63 74 78  _result_text(ctx
55d0: 2c 20 70 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a  , pv, n, cb);.}.
55e0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
55f0: 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74  xport) void __st
5600: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65  dcall sqlite3_re
5610: 73 75 6c 74 5f 74 65 78 74 31 36 5f 69 6e 74 65  sult_text16_inte
5620: 72 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  rop(sqlite3_cont
5630: 65 78 74 20 2a 63 74 78 2c 20 63 6f 6e 73 74 20  ext *ctx, const 
5640: 76 6f 69 64 20 2a 70 76 2c 20 69 6e 74 20 6e 2c  void *pv, int n,
5650: 20 76 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20   void(*cb)(void 
5660: 2a 29 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f  *)).{.  sqlite3_
5670: 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 63 74  result_text16(ct
5680: 78 2c 20 70 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d  x, pv, n, cb);.}
5690: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
56a0: 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73  export) void __s
56b0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72  tdcall sqlite3_r
56c0: 65 61 6c 63 6f 6c 6e 61 6d 65 73 28 73 71 6c 69  ealcolnames(sqli
56d0: 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 62 4f 6e  te3 *db, int bOn
56e0: 29 0a 7b 0a 20 20 69 66 20 28 62 4f 6e 29 0a 20  ).{.  if (bOn). 
56f0: 20 20 20 64 62 2d 3e 66 6c 61 67 73 20 7c 3d 20     db->flags |= 
5700: 30 78 30 31 30 30 30 30 30 30 3b 0a 20 20 65 6c  0x01000000;.  el
5710: 73 65 0a 20 20 20 20 64 62 2d 3e 66 6c 61 67 73  se.    db->flags
5720: 20 26 3d 20 28 7e 30 78 30 31 30 30 30 30 30 30   &= (~0x01000000
5730: 29 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2f 20  );.}..#endif // 
5740: 4f 53 5f 57 49 4e 0a                             OS_WIN.