System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 3b38f2012772b54ca8b5acd4c196520860981946:


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 54 68 72 65 61 64 44 61   sqlite3ThreadDa
0770: 74 61 28 29 2d 3e 6d 61 6c 6c 6f 63 46 61 69 6c  ta()->mallocFail
0780: 65 64 20 29 20 72 65 74 75 72 6e 3b 0a 20 20 70  ed ) return;.  p
0790: 50 61 72 73 65 2d 3e 63 6f 6c 4e 61 6d 65 73 53  Parse->colNamesS
07a0: 65 74 20 3d 20 31 3b 0a 20 20 66 75 6c 6c 4e 61  et = 1;.  fullNa
07b0: 6d 65 73 20 3d 20 28 64 62 2d 3e 66 6c 61 67 73  mes = (db->flags
07c0: 20 26 20 53 51 4c 49 54 45 5f 46 75 6c 6c 43 6f   & SQLITE_FullCo
07d0: 6c 4e 61 6d 65 73 29 21 3d 30 3b 0a 20 20 73 68  lNames)!=0;.  sh
07e0: 6f 72 74 4e 61 6d 65 73 20 3d 20 28 64 62 2d 3e  ortNames = (db->
07f0: 66 6c 61 67 73 20 26 20 53 51 4c 49 54 45 5f 53  flags & SQLITE_S
0800: 68 6f 72 74 43 6f 6c 4e 61 6d 65 73 29 21 3d 30  hortColNames)!=0
0810: 3b 0a 20 20 69 66 20 28 72 65 61 6c 4e 61 6d 65  ;.  if (realName
0820: 73 29 20 66 75 6c 6c 4e 61 6d 65 73 20 3d 20 31  s) fullNames = 1
0830: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
0840: 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45         /*** ADDE
0850: 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  D - SQLite.Inter
0860: 6f 70 20 2a 2a 2a 2f 0a 0a 20 20 73 71 6c 69 74  op ***/..  sqlit
0870: 65 33 56 64 62 65 53 65 74 4e 75 6d 43 6f 6c 73  e3VdbeSetNumCols
0880: 28 76 2c 20 70 45 4c 69 73 74 2d 3e 6e 45 78 70  (v, pEList->nExp
0890: 72 29 3b 0a 20 20 66 6f 72 28 69 3d 30 3b 20 69  r);.  for(i=0; i
08a0: 3c 70 45 4c 69 73 74 2d 3e 6e 45 78 70 72 3b 20  <pEList->nExpr; 
08b0: 69 2b 2b 29 7b 0a 20 20 20 20 45 78 70 72 20 2a  i++){.    Expr *
08c0: 70 3b 0a 20 20 20 20 70 20 3d 20 70 45 4c 69 73  p;.    p = pELis
08d0: 74 2d 3e 61 5b 69 5d 2e 70 45 78 70 72 3b 0a 20  t->a[i].pExpr;. 
08e0: 20 20 20 69 66 28 20 70 3d 3d 30 20 29 20 63 6f     if( p==0 ) co
08f0: 6e 74 69 6e 75 65 3b 0a 20 20 20 20 69 66 28 20  ntinue;.    if( 
0900: 70 45 4c 69 73 74 2d 3e 61 5b 69 5d 2e 7a 4e 61  pEList->a[i].zNa
0910: 6d 65 20 26 26 20 28 72 65 61 6c 4e 61 6d 65 73  me && (realNames
0920: 20 3d 3d 20 30 20 7c 7c 20 70 2d 3e 6f 70 20 21   == 0 || p->op !
0930: 3d 20 54 4b 5f 43 4f 4c 55 4d 4e 29 29 7b 20 20  = TK_COLUMN)){  
0940: 20 2f 2a 2a 2a 20 43 48 41 4e 47 45 44 20 2d 20   /*** CHANGED - 
0950: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a  SQLite.Interop *
0960: 2a 2a 2f 0a 20 20 20 20 20 20 63 68 61 72 20 2a  **/.      char *
0970: 7a 4e 61 6d 65 20 3d 20 70 45 4c 69 73 74 2d 3e  zName = pEList->
0980: 61 5b 69 5d 2e 7a 4e 61 6d 65 3b 0a 20 20 20 20  a[i].zName;.    
0990: 20 20 73 71 6c 69 74 65 33 56 64 62 65 53 65 74    sqlite3VdbeSet
09a0: 43 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 7a 4e  ColName(v, i, zN
09b0: 61 6d 65 2c 20 73 74 72 6c 65 6e 28 7a 4e 61 6d  ame, strlen(zNam
09c0: 65 29 29 3b 0a 20 20 20 20 20 20 63 6f 6e 74 69  e));.      conti
09d0: 6e 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69  nue;.    }.    i
09e0: 66 28 20 70 2d 3e 6f 70 3d 3d 54 4b 5f 43 4f 4c  f( p->op==TK_COL
09f0: 55 4d 4e 20 26 26 20 70 54 61 62 4c 69 73 74 20  UMN && pTabList 
0a00: 29 7b 0a 20 20 20 20 20 20 54 61 62 6c 65 20 2a  ){.      Table *
0a10: 70 54 61 62 3b 0a 20 20 20 20 20 20 63 68 61 72  pTab;.      char
0a20: 20 2a 7a 43 6f 6c 3b 0a 20 20 20 20 20 20 69 6e   *zCol;.      in
0a30: 74 20 69 43 6f 6c 20 3d 20 70 2d 3e 69 43 6f 6c  t iCol = p->iCol
0a40: 75 6d 6e 3b 0a 20 20 20 20 20 20 66 6f 72 28 6a  umn;.      for(j
0a50: 3d 30 3b 20 6a 3c 70 54 61 62 4c 69 73 74 2d 3e  =0; j<pTabList->
0a60: 6e 53 72 63 20 26 26 20 70 54 61 62 4c 69 73 74  nSrc && pTabList
0a70: 2d 3e 61 5b 6a 5d 2e 69 43 75 72 73 6f 72 21 3d  ->a[j].iCursor!=
0a80: 70 2d 3e 69 54 61 62 6c 65 3b 20 6a 2b 2b 29 7b  p->iTable; j++){
0a90: 7d 0a 20 20 20 20 20 20 61 73 73 65 72 74 28 20  }.      assert( 
0aa0: 6a 3c 70 54 61 62 4c 69 73 74 2d 3e 6e 53 72 63  j<pTabList->nSrc
0ab0: 20 29 3b 0a 20 20 20 20 20 20 70 54 61 62 20 3d   );.      pTab =
0ac0: 20 70 54 61 62 4c 69 73 74 2d 3e 61 5b 6a 5d 2e   pTabList->a[j].
0ad0: 70 54 61 62 3b 0a 20 20 20 20 20 20 69 66 28 20  pTab;.      if( 
0ae0: 69 43 6f 6c 3c 30 20 29 20 69 43 6f 6c 20 3d 20  iCol<0 ) iCol = 
0af0: 70 54 61 62 2d 3e 69 50 4b 65 79 3b 0a 20 20 20  pTab->iPKey;.   
0b00: 20 20 20 61 73 73 65 72 74 28 20 69 43 6f 6c 3d     assert( iCol=
0b10: 3d 2d 31 20 7c 7c 20 28 69 43 6f 6c 3e 3d 30 20  =-1 || (iCol>=0 
0b20: 26 26 20 69 43 6f 6c 3c 70 54 61 62 2d 3e 6e 43  && iCol<pTab->nC
0b30: 6f 6c 29 20 29 3b 0a 20 20 20 20 20 20 69 66 28  ol) );.      if(
0b40: 20 69 43 6f 6c 3c 30 20 29 7b 0a 20 20 20 20 20   iCol<0 ){.     
0b50: 20 20 20 7a 43 6f 6c 20 3d 20 22 72 6f 77 69 64     zCol = "rowid
0b60: 22 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a  ";.      }else{.
0b70: 20 20 20 20 20 20 20 20 7a 43 6f 6c 20 3d 20 70          zCol = p
0b80: 54 61 62 2d 3e 61 43 6f 6c 5b 69 43 6f 6c 5d 2e  Tab->aCol[iCol].
0b90: 7a 4e 61 6d 65 3b 0a 20 20 20 20 20 20 7d 0a 20  zName;.      }. 
0ba0: 20 20 20 20 20 69 66 28 20 21 73 68 6f 72 74 4e       if( !shortN
0bb0: 61 6d 65 73 20 26 26 20 21 66 75 6c 6c 4e 61 6d  ames && !fullNam
0bc0: 65 73 20 26 26 20 70 2d 3e 73 70 61 6e 2e 7a 20  es && p->span.z 
0bd0: 26 26 20 70 2d 3e 73 70 61 6e 2e 7a 5b 30 5d 20  && p->span.z[0] 
0be0: 29 7b 0a 20 20 20 20 20 20 20 20 73 71 6c 69 74  ){.        sqlit
0bf0: 65 33 56 64 62 65 53 65 74 43 6f 6c 4e 61 6d 65  e3VdbeSetColName
0c00: 28 76 2c 20 69 2c 20 28 63 68 61 72 2a 29 70 2d  (v, i, (char*)p-
0c10: 3e 73 70 61 6e 2e 7a 2c 20 70 2d 3e 73 70 61 6e  >span.z, p->span
0c20: 2e 6e 29 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65  .n);.      }else
0c30: 20 69 66 28 20 66 75 6c 6c 4e 61 6d 65 73 20 7c   if( fullNames |
0c40: 7c 20 28 21 73 68 6f 72 74 4e 61 6d 65 73 20 26  | (!shortNames &
0c50: 26 20 70 54 61 62 4c 69 73 74 2d 3e 6e 53 72 63  & pTabList->nSrc
0c60: 3e 31 29 20 29 7b 0a 20 20 20 20 20 20 20 20 63  >1) ){.        c
0c70: 68 61 72 20 2a 7a 4e 61 6d 65 20 3d 20 30 3b 0a  har *zName = 0;.
0c80: 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 7a 54          char *zT
0c90: 61 62 3b 0a 20 20 20 20 20 20 20 20 63 68 61 72  ab;.        char
0ca0: 20 2a 7a 44 62 20 3d 20 30 3b 20 20 20 20 20 20   *zDb = 0;      
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 20 20 20 20 20 20 20 20                  
0ce0: 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20 2d      /*** ADDED -
0cf0: 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20   SQLite.Interop 
0d00: 2a 2a 2a 2f 0a 20 20 20 20 20 20 20 20 69 6e 74  ***/.        int
0d10: 20 69 44 62 3b 0a 0a 20 20 20 20 20 20 20 20 69   iDb;..        i
0d20: 44 62 20 3d 20 73 71 6c 69 74 65 33 53 63 68 65  Db = sqlite3Sche
0d30: 6d 61 54 6f 49 6e 64 65 78 28 70 50 61 72 73 65  maToIndex(pParse
0d40: 2d 3e 64 62 2c 20 70 54 61 62 2d 3e 70 53 63 68  ->db, pTab->pSch
0d50: 65 6d 61 29 3b 0a 0a 20 20 20 20 20 20 20 20 7a  ema);..        z
0d60: 54 61 62 20 3d 20 70 54 61 62 4c 69 73 74 2d 3e  Tab = pTabList->
0d70: 61 5b 6a 5d 2e 7a 41 6c 69 61 73 3b 0a 20 20 20  a[j].zAlias;.   
0d80: 20 20 20 20 20 69 66 28 20 66 75 6c 6c 4e 61 6d       if( fullNam
0d90: 65 73 20 7c 7c 20 7a 54 61 62 3d 3d 30 20 29 7b  es || zTab==0 ){
0da0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69  .          if (i
0db0: 44 62 20 3e 20 31 29 20 7a 44 62 20 3d 20 64 62  Db > 1) zDb = db
0dc0: 2d 3e 61 44 62 5b 69 44 62 5d 2e 7a 4e 61 6d 65  ->aDb[iDb].zName
0dd0: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
0de0: 20 20 20 20 20 2f 2a 2a 2a 20 41 44 44 45 44 20       /*** ADDED 
0df0: 2d 20 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70  - SQLite.Interop
0e00: 20 2a 2a 2a 2f 0a 20 20 20 20 20 20 20 20 20 20   ***/.          
0e10: 7a 54 61 62 20 3d 20 70 54 61 62 2d 3e 7a 4e 61  zTab = pTab->zNa
0e20: 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  me;.        }.  
0e30: 20 20 20 20 20 20 69 66 20 28 21 7a 44 62 20 7c        if (!zDb |
0e40: 7c 20 21 72 65 61 6c 4e 61 6d 65 73 29 20 73 71  | !realNames) sq
0e50: 6c 69 74 65 33 53 65 74 53 74 72 69 6e 67 28 26  lite3SetString(&
0e60: 7a 4e 61 6d 65 2c 20 7a 54 61 62 2c 20 22 5c 78  zName, zTab, "\x
0e70: 30 31 22 2c 20 7a 43 6f 6c 2c 20 30 29 3b 20 20  01", zCol, 0);  
0e80: 20 2f 2a 2a 2a 20 43 48 41 4e 47 45 44 20 2d 20   /*** CHANGED - 
0e90: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 20 2a  SQLite.Interop *
0ea0: 2a 2a 2f 0a 20 20 20 20 20 20 20 20 65 6c 73 65  **/.        else
0eb0: 20 73 71 6c 69 74 65 33 53 65 74 53 74 72 69 6e   sqlite3SetStrin
0ec0: 67 28 26 7a 4e 61 6d 65 2c 20 7a 44 62 2c 20 22  g(&zName, zDb, "
0ed0: 5c 78 30 31 22 2c 20 7a 54 61 62 2c 20 22 5c 78  \x01", zTab, "\x
0ee0: 30 31 22 2c 20 7a 43 6f 6c 2c 20 30 29 3b 20 20  01", zCol, 0);  
0ef0: 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 2a 20 41            /*** A
0f00: 44 44 45 44 20 2d 20 53 51 4c 69 74 65 2e 49 6e  DDED - SQLite.In
0f10: 74 65 72 6f 70 20 2a 2a 2a 2f 0a 20 20 20 20 20  terop ***/.     
0f20: 20 20 20 73 71 6c 69 74 65 33 56 64 62 65 53 65     sqlite3VdbeSe
0f30: 74 43 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 7a  tColName(v, i, z
0f40: 4e 61 6d 65 2c 20 50 33 5f 44 59 4e 41 4d 49 43  Name, P3_DYNAMIC
0f50: 29 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a  );.      }else{.
0f60: 20 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 56          sqlite3V
0f70: 64 62 65 53 65 74 43 6f 6c 4e 61 6d 65 28 76 2c  dbeSetColName(v,
0f80: 20 69 2c 20 7a 43 6f 6c 2c 20 73 74 72 6c 65 6e   i, zCol, strlen
0f90: 28 7a 43 6f 6c 29 29 3b 0a 20 20 20 20 20 20 7d  (zCol));.      }
0fa0: 0a 20 20 20 20 7d 65 6c 73 65 20 69 66 28 20 70  .    }else if( p
0fb0: 2d 3e 73 70 61 6e 2e 7a 20 26 26 20 70 2d 3e 73  ->span.z && p->s
0fc0: 70 61 6e 2e 7a 5b 30 5d 20 29 7b 0a 20 20 20 20  pan.z[0] ){.    
0fd0: 20 20 73 71 6c 69 74 65 33 56 64 62 65 53 65 74    sqlite3VdbeSet
0fe0: 43 6f 6c 4e 61 6d 65 28 76 2c 20 69 2c 20 28 63  ColName(v, i, (c
0ff0: 68 61 72 2a 29 70 2d 3e 73 70 61 6e 2e 7a 2c 20  har*)p->span.z, 
1000: 70 2d 3e 73 70 61 6e 2e 6e 29 3b 0a 20 20 20 20  p->span.n);.    
1010: 20 20 2f 2a 20 73 71 6c 69 74 65 33 56 64 62 65    /* sqlite3Vdbe
1020: 43 6f 6d 70 72 65 73 73 53 70 61 63 65 28 76 2c  CompressSpace(v,
1030: 20 61 64 64 72 29 3b 20 2a 2f 0a 20 20 20 20 7d   addr); */.    }
1040: 65 6c 73 65 7b 0a 20 20 20 20 20 20 63 68 61 72  else{.      char
1050: 20 7a 4e 61 6d 65 5b 33 30 5d 3b 0a 20 20 20 20   zName[30];.    
1060: 20 20 61 73 73 65 72 74 28 20 70 2d 3e 6f 70 21    assert( p->op!
1070: 3d 54 4b 5f 43 4f 4c 55 4d 4e 20 7c 7c 20 70 54  =TK_COLUMN || pT
1080: 61 62 4c 69 73 74 3d 3d 30 20 29 3b 0a 20 20 20  abList==0 );.   
1090: 20 20 20 73 70 72 69 6e 74 66 28 7a 4e 61 6d 65     sprintf(zName
10a0: 2c 20 22 63 6f 6c 75 6d 6e 25 64 22 2c 20 69 2b  , "column%d", i+
10b0: 31 29 3b 0a 20 20 20 20 20 20 73 71 6c 69 74 65  1);.      sqlite
10c0: 33 56 64 62 65 53 65 74 43 6f 6c 4e 61 6d 65 28  3VdbeSetColName(
10d0: 76 2c 20 69 2c 20 7a 4e 61 6d 65 2c 20 30 29 3b  v, i, zName, 0);
10e0: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 67 65 6e  .    }.  }.  gen
10f0: 65 72 61 74 65 43 6f 6c 75 6d 6e 54 79 70 65 73  erateColumnTypes
1100: 28 70 50 61 72 73 65 2c 20 70 54 61 62 4c 69 73  (pParse, pTabLis
1110: 74 2c 20 70 45 4c 69 73 74 29 3b 0a 7d 0a 0a 23  t, pEList);.}..#
1120: 69 66 64 65 66 20 4f 53 5f 57 49 4e 0a 0a 23 69  ifdef OS_WIN..#i
1130: 6e 63 6c 75 64 65 20 3c 74 63 68 61 72 2e 68 3e  nclude <tchar.h>
1140: 0a 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 28  ..typedef void (
1150: 5f 5f 73 74 64 63 61 6c 6c 20 2a 53 51 4c 49 54  __stdcall *SQLIT
1160: 45 55 53 45 52 46 55 4e 43 29 28 76 6f 69 64 20  EUSERFUNC)(void 
1170: 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 20 2a 2a 29  *, int, void **)
1180: 3b 0a 74 79 70 65 64 65 66 20 69 6e 74 20 20 28  ;.typedef int  (
1190: 5f 5f 73 74 64 63 61 6c 6c 20 2a 53 51 4c 49 54  __stdcall *SQLIT
11a0: 45 43 4f 4c 4c 41 54 49 4f 4e 29 28 69 6e 74 2c  ECOLLATION)(int,
11b0: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2c 20 69   const void *, i
11c0: 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 29  nt, const void*)
11d0: 3b 0a 0a 74 79 70 65 64 65 66 20 69 6e 74 20 28  ;..typedef int (
11e0: 5f 5f 73 74 64 63 61 6c 6c 20 2a 45 4e 43 52 59  __stdcall *ENCRY
11f0: 50 54 46 49 4c 45 57 29 28 63 6f 6e 73 74 20 77  PTFILEW)(const w
1200: 63 68 61 72 5f 74 20 2a 29 3b 0a 74 79 70 65 64  char_t *);.typed
1210: 65 66 20 69 6e 74 20 28 5f 5f 73 74 64 63 61 6c  ef int (__stdcal
1220: 6c 20 2a 45 4e 43 52 59 50 54 45 44 53 54 41 54  l *ENCRYPTEDSTAT
1230: 55 53 57 29 28 63 6f 6e 73 74 20 77 63 68 61 72  USW)(const wchar
1240: 5f 74 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 6c  _t *, unsigned l
1250: 6f 6e 67 20 2a 29 3b 0a 74 79 70 65 64 65 66 20  ong *);.typedef 
1260: 69 6e 74 20 28 5f 5f 73 74 64 63 61 6c 6c 20 2a  int (__stdcall *
1270: 44 45 43 52 59 50 54 46 49 4c 45 57 29 28 63 6f  DECRYPTFILEW)(co
1280: 6e 73 74 20 77 63 68 61 72 5f 74 20 2a 2c 20 75  nst wchar_t *, u
1290: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a 0a  nsigned long);..
12a0: 74 79 70 65 64 65 66 20 48 41 4e 44 4c 45 20 28  typedef HANDLE (
12b0: 5f 5f 73 74 64 63 61 6c 6c 20 2a 43 52 45 41 54  __stdcall *CREAT
12c0: 45 46 49 4c 45 57 29 28 0a 20 20 20 20 4c 50 43  EFILEW)(.    LPC
12d0: 57 53 54 52 2c 0a 20 20 20 20 44 57 4f 52 44 2c  WSTR,.    DWORD,
12e0: 0a 20 20 20 20 44 57 4f 52 44 2c 0a 20 20 20 20  .    DWORD,.    
12f0: 4c 50 53 45 43 55 52 49 54 59 5f 41 54 54 52 49  LPSECURITY_ATTRI
1300: 42 55 54 45 53 2c 0a 20 20 20 20 44 57 4f 52 44  BUTES,.    DWORD
1310: 2c 0a 20 20 20 20 44 57 4f 52 44 2c 0a 20 20 20  ,.    DWORD,.   
1320: 20 48 41 4e 44 4c 45 29 3b 0a 0a 2f 2f 20 43 61   HANDLE);..// Ca
1330: 6c 6c 62 61 63 6b 20 77 72 61 70 70 65 72 73 0a  llback wrappers.
1340: 69 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  int sqlite3_inte
1350: 72 6f 70 5f 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e  rop_collationfun
1360: 63 28 76 6f 69 64 20 2a 70 76 2c 20 69 6e 74 20  c(void *pv, int 
1370: 6c 65 6e 31 2c 20 63 6f 6e 73 74 20 76 6f 69 64  len1, const void
1380: 20 2a 70 76 31 2c 20 69 6e 74 20 6c 65 6e 32 2c   *pv1, int len2,
1390: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 32   const void *pv2
13a0: 29 0a 7b 0a 20 20 53 51 4c 49 54 45 43 4f 4c 4c  ).{.  SQLITECOLL
13b0: 41 54 49 4f 4e 20 2a 70 20 3d 20 28 53 51 4c 49  ATION *p = (SQLI
13c0: 54 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 29 70 76  TECOLLATION *)pv
13d0: 3b 0a 20 20 72 65 74 75 72 6e 20 70 5b 30 5d 28  ;.  return p[0](
13e0: 6c 65 6e 31 2c 20 70 76 31 2c 20 6c 65 6e 32 2c  len1, pv1, len2,
13f0: 20 70 76 32 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73   pv2);.}..void s
1400: 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66  qlite3_interop_f
1410: 75 6e 63 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  unc(sqlite3_cont
1420: 65 78 74 20 2a 70 63 74 78 2c 20 69 6e 74 20 6e  ext *pctx, int n
1430: 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  , sqlite3_value 
1440: 2a 2a 70 76 29 0a 7b 0a 20 20 53 51 4c 49 54 45  **pv).{.  SQLITE
1450: 55 53 45 52 46 55 4e 43 20 2a 70 66 20 3d 20 28  USERFUNC *pf = (
1460: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a  SQLITEUSERFUNC *
1470: 29 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61  )sqlite3_user_da
1480: 74 61 28 70 63 74 78 29 3b 0a 20 20 70 66 5b 30  ta(pctx);.  pf[0
1490: 5d 28 70 63 74 78 2c 20 6e 2c 20 28 76 6f 69 64  ](pctx, n, (void
14a0: 20 2a 2a 29 70 76 29 3b 0a 7d 0a 0a 76 6f 69 64   **)pv);.}..void
14b0: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70   sqlite3_interop
14c0: 5f 73 74 65 70 28 73 71 6c 69 74 65 33 5f 63 6f  _step(sqlite3_co
14d0: 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 69 6e 74  ntext *pctx, int
14e0: 20 6e 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75   n, sqlite3_valu
14f0: 65 20 2a 2a 70 76 29 0a 7b 0a 20 20 53 51 4c 49  e **pv).{.  SQLI
1500: 54 45 55 53 45 52 46 55 4e 43 20 2a 70 66 20 3d  TEUSERFUNC *pf =
1510: 20 28 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43   (SQLITEUSERFUNC
1520: 20 2a 29 73 71 6c 69 74 65 33 5f 75 73 65 72 5f   *)sqlite3_user_
1530: 64 61 74 61 28 70 63 74 78 29 3b 0a 20 20 70 66  data(pctx);.  pf
1540: 5b 31 5d 28 70 63 74 78 2c 20 6e 2c 20 28 76 6f  [1](pctx, n, (vo
1550: 69 64 20 2a 2a 29 70 76 29 3b 0a 7d 0a 0a 76 6f  id **)pv);.}..vo
1560: 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  id sqlite3_inter
1570: 6f 70 5f 66 69 6e 61 6c 28 73 71 6c 69 74 65 33  op_final(sqlite3
1580: 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 29 0a  _context *pctx).
1590: 7b 0a 20 20 53 51 4c 49 54 45 55 53 45 52 46 55  {.  SQLITEUSERFU
15a0: 4e 43 20 2a 70 66 20 3d 20 28 53 51 4c 49 54 45  NC *pf = (SQLITE
15b0: 55 53 45 52 46 55 4e 43 20 2a 29 73 71 6c 69 74  USERFUNC *)sqlit
15c0: 65 33 5f 75 73 65 72 5f 64 61 74 61 28 70 63 74  e3_user_data(pct
15d0: 78 29 3b 0a 20 20 70 66 5b 32 5d 28 70 63 74 78  x);.  pf[2](pctx
15e0: 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a 5f 5f 64 65  , 0, 0);.}..__de
15f0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
1600: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
1610: 20 73 71 6c 69 74 65 33 5f 73 6c 65 65 70 5f 69   sqlite3_sleep_i
1620: 6e 74 65 72 6f 70 28 69 6e 74 20 6d 69 6c 6c 69  nterop(int milli
1630: 73 65 63 6f 6e 64 73 29 0a 7b 0a 20 20 53 6c 65  seconds).{.  Sle
1640: 65 70 28 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 29  ep(milliseconds)
1650: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
1660: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 73  dllexport) int s
1670: 71 6c 69 74 65 33 5f 65 6e 63 72 79 70 74 66 69  qlite3_encryptfi
1680: 6c 65 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74  le(const wchar_t
1690: 20 2a 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a   *pwszFilename).
16a0: 7b 0a 20 20 48 4d 4f 44 55 4c 45 20 68 4d 6f 64  {.  HMODULE hMod
16b0: 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 5f   = LoadLibrary(_
16c0: 54 28 22 41 44 56 41 50 49 33 32 22 29 29 3b 0a  T("ADVAPI32"));.
16d0: 20 20 45 4e 43 52 59 50 54 46 49 4c 45 57 20 70    ENCRYPTFILEW p
16e0: 66 75 6e 63 3b 0a 20 20 69 6e 74 20 6e 3b 0a 0a  func;.  int n;..
16f0: 20 20 69 66 20 28 68 4d 6f 64 20 3d 3d 20 4e 55    if (hMod == NU
1700: 4c 4c 29 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c  LL).  {.    SetL
1710: 61 73 74 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e  astError(ERROR_N
1720: 4f 54 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a 20  OT_SUPPORTED);. 
1730: 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d     return 0;.  }
1740: 0a 20 20 0a 20 20 70 66 75 6e 63 20 3d 20 28 45  .  .  pfunc = (E
1750: 4e 43 52 59 50 54 46 49 4c 45 57 29 47 65 74 50  NCRYPTFILEW)GetP
1760: 72 6f 63 41 64 64 72 65 73 73 28 68 4d 6f 64 2c  rocAddress(hMod,
1770: 20 5f 54 28 22 45 6e 63 72 79 70 74 46 69 6c 65   _T("EncryptFile
1780: 57 22 29 29 3b 0a 20 20 69 66 20 28 70 66 75 6e  W"));.  if (pfun
1790: 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20  c == NULL).  {. 
17a0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28     SetLastError(
17b0: 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52  ERROR_NOT_SUPPOR
17c0: 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e  TED);.    return
17d0: 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20 3d 20 70   0;.  }..  n = p
17e0: 66 75 6e 63 28 70 77 73 7a 46 69 6c 65 6e 61 6d  func(pwszFilenam
17f0: 65 29 3b 0a 0a 20 20 46 72 65 65 4c 69 62 72 61  e);..  FreeLibra
1800: 72 79 28 68 4d 6f 64 29 3b 0a 0a 20 20 72 65 74  ry(hMod);..  ret
1810: 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  urn n;.}..__decl
1820: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
1830: 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 65 63 72  int sqlite3_decr
1840: 79 70 74 66 69 6c 65 28 63 6f 6e 73 74 20 77 63  yptfile(const wc
1850: 68 61 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e  har_t *pwszFilen
1860: 61 6d 65 29 0a 7b 0a 20 20 48 4d 4f 44 55 4c 45  ame).{.  HMODULE
1870: 20 68 4d 6f 64 20 3d 20 4c 6f 61 64 4c 69 62 72   hMod = LoadLibr
1880: 61 72 79 28 5f 54 28 22 41 44 56 41 50 49 33 32  ary(_T("ADVAPI32
1890: 22 29 29 3b 0a 20 20 44 45 43 52 59 50 54 46 49  "));.  DECRYPTFI
18a0: 4c 45 57 20 70 66 75 6e 63 3b 0a 20 20 69 6e 74  LEW pfunc;.  int
18b0: 20 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f 64 20   n;..  if (hMod 
18c0: 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20 20 20  == NULL).  {.   
18d0: 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45 52   SetLastError(ER
18e0: 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45  ROR_NOT_SUPPORTE
18f0: 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 30  D);.    return 0
1900: 3b 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63 20 3d  ;.  }..  pfunc =
1910: 20 28 44 45 43 52 59 50 54 46 49 4c 45 57 29 47   (DECRYPTFILEW)G
1920: 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 68 4d  etProcAddress(hM
1930: 6f 64 2c 20 5f 54 28 22 44 65 63 72 79 70 74 46  od, _T("DecryptF
1940: 69 6c 65 57 22 29 29 3b 0a 20 20 69 66 20 28 70  ileW"));.  if (p
1950: 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20  func == NULL).  
1960: 7b 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72  {.    SetLastErr
1970: 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50  or(ERROR_NOT_SUP
1980: 50 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74  PORTED);.    ret
1990: 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20  urn 0;.  }..  n 
19a0: 3d 20 70 66 75 6e 63 28 70 77 73 7a 46 69 6c 65  = pfunc(pwszFile
19b0: 6e 61 6d 65 2c 20 30 29 3b 0a 0a 20 20 46 72 65  name, 0);..  Fre
19c0: 65 4c 69 62 72 61 72 79 28 68 4d 6f 64 29 3b 0a  eLibrary(hMod);.
19d0: 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a  .  return n;.}..
19e0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
19f0: 70 6f 72 74 29 20 75 6e 73 69 67 6e 65 64 20 6c  port) unsigned l
1a00: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 65 6e 63 72  ong sqlite3_encr
1a10: 79 70 74 65 64 73 74 61 74 75 73 28 63 6f 6e 73  yptedstatus(cons
1a20: 74 20 77 63 68 61 72 5f 74 20 2a 70 77 73 7a 46  t wchar_t *pwszF
1a30: 69 6c 65 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65  ilename, unsigne
1a40: 64 20 6c 6f 6e 67 20 2a 70 64 77 53 74 61 74 75  d long *pdwStatu
1a50: 73 29 0a 7b 0a 20 20 48 4d 4f 44 55 4c 45 20 68  s).{.  HMODULE h
1a60: 4d 6f 64 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  Mod = LoadLibrar
1a70: 79 28 5f 54 28 22 41 44 56 41 50 49 33 32 22 29  y(_T("ADVAPI32")
1a80: 29 3b 0a 20 20 45 4e 43 52 59 50 54 45 44 53 54  );.  ENCRYPTEDST
1a90: 41 54 55 53 57 20 70 66 75 6e 63 3b 0a 20 20 69  ATUSW pfunc;.  i
1aa0: 6e 74 20 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f  nt n;..  if (hMo
1ab0: 64 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20  d == NULL).  {. 
1ac0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28     SetLastError(
1ad0: 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52  ERROR_NOT_SUPPOR
1ae0: 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e  TED);.    return
1af0: 20 30 3b 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63   0;.  }..  pfunc
1b00: 20 3d 20 28 45 4e 43 52 59 50 54 45 44 53 54 41   = (ENCRYPTEDSTA
1b10: 54 55 53 57 29 47 65 74 50 72 6f 63 41 64 64 72  TUSW)GetProcAddr
1b20: 65 73 73 28 68 4d 6f 64 2c 20 5f 54 28 22 46 69  ess(hMod, _T("Fi
1b30: 6c 65 45 6e 63 72 79 70 74 69 6f 6e 53 74 61 74  leEncryptionStat
1b40: 75 73 57 22 29 29 3b 0a 20 20 69 66 20 28 70 66  usW"));.  if (pf
1b50: 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b  unc == NULL).  {
1b60: 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f  .    SetLastErro
1b70: 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50  r(ERROR_NOT_SUPP
1b80: 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75  ORTED);.    retu
1b90: 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 6e 20 3d  rn 0;.  }..  n =
1ba0: 20 70 66 75 6e 63 28 70 77 73 7a 46 69 6c 65 6e   pfunc(pwszFilen
1bb0: 61 6d 65 2c 20 70 64 77 53 74 61 74 75 73 29 3b  ame, pdwStatus);
1bc0: 0a 0a 20 20 46 72 65 65 4c 69 62 72 61 72 79 28  ..  FreeLibrary(
1bd0: 68 4d 6f 64 29 3b 0a 0a 20 20 72 65 74 75 72 6e  hMod);..  return
1be0: 20 6e 3b 0a 7d 0a 0a 69 6e 74 20 53 65 74 43 6f   n;.}..int SetCo
1bf0: 6d 70 72 65 73 73 69 6f 6e 28 63 6f 6e 73 74 20  mpression(const 
1c00: 77 63 68 61 72 5f 74 20 2a 70 77 73 7a 46 69 6c  wchar_t *pwszFil
1c10: 65 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20  ename, unsigned 
1c20: 73 68 6f 72 74 20 75 66 4c 65 76 65 6c 29 0a 7b  short ufLevel).{
1c30: 0a 23 69 66 64 65 66 20 46 53 43 54 4c 5f 53 45  .#ifdef FSCTL_SE
1c40: 54 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 0a 20 20  T_COMPRESSION.  
1c50: 48 4d 4f 44 55 4c 45 20 68 4d 6f 64 20 3d 20 47  HMODULE hMod = G
1c60: 65 74 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 28 5f  etModuleHandle(_
1c70: 54 28 22 4b 45 52 4e 45 4c 33 32 22 29 29 3b 0a  T("KERNEL32"));.
1c80: 20 20 43 52 45 41 54 45 46 49 4c 45 57 20 70 66    CREATEFILEW pf
1c90: 75 6e 63 3b 0a 20 20 48 41 4e 44 4c 45 20 68 46  unc;.  HANDLE hF
1ca0: 69 6c 65 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20  ile;.  unsigned 
1cb0: 6c 6f 6e 67 20 64 77 20 3d 20 30 3b 0a 20 20 69  long dw = 0;.  i
1cc0: 6e 74 20 6e 3b 0a 0a 20 20 69 66 20 28 68 4d 6f  nt n;..  if (hMo
1cd0: 64 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 7b 0a 20  d == NULL).  {. 
1ce0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 28     SetLastError(
1cf0: 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52  ERROR_NOT_SUPPOR
1d00: 54 45 44 29 3b 0a 20 20 20 20 72 65 74 75 72 6e  TED);.    return
1d10: 20 30 3b 0a 20 20 7d 0a 0a 20 20 70 66 75 6e 63   0;.  }..  pfunc
1d20: 20 3d 20 28 43 52 45 41 54 45 46 49 4c 45 57 29   = (CREATEFILEW)
1d30: 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 68  GetProcAddress(h
1d40: 4d 6f 64 2c 20 5f 54 28 22 43 72 65 61 74 65 46  Mod, _T("CreateF
1d50: 69 6c 65 57 22 29 29 3b 0a 20 20 69 66 20 28 70  ileW"));.  if (p
1d60: 66 75 6e 63 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20  func == NULL).  
1d70: 7b 0a 20 20 20 20 53 65 74 4c 61 73 74 45 72 72  {.    SetLastErr
1d80: 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55 50  or(ERROR_NOT_SUP
1d90: 50 4f 52 54 45 44 29 3b 0a 20 20 20 20 72 65 74  PORTED);.    ret
1da0: 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a 20 20 68 46  urn 0;.  }..  hF
1db0: 69 6c 65 20 3d 20 70 66 75 6e 63 28 70 77 73 7a  ile = pfunc(pwsz
1dc0: 46 69 6c 65 6e 61 6d 65 2c 20 47 45 4e 45 52 49  Filename, GENERI
1dd0: 43 5f 52 45 41 44 7c 47 45 4e 45 52 49 43 5f 57  C_READ|GENERIC_W
1de0: 52 49 54 45 2c 20 30 2c 20 4e 55 4c 4c 2c 20 4f  RITE, 0, NULL, O
1df0: 50 45 4e 5f 45 58 49 53 54 49 4e 47 2c 20 46 49  PEN_EXISTING, FI
1e00: 4c 45 5f 41 54 54 52 49 42 55 54 45 5f 4e 4f 52  LE_ATTRIBUTE_NOR
1e10: 4d 41 4c 2c 20 4e 55 4c 4c 29 3b 0a 20 20 69 66  MAL, NULL);.  if
1e20: 20 28 68 46 69 6c 65 20 3d 3d 20 4e 55 4c 4c 29   (hFile == NULL)
1e30: 0a 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 0a  .    return 0;..
1e40: 20 20 6e 20 3d 20 44 65 76 69 63 65 49 6f 43 6f    n = DeviceIoCo
1e50: 6e 74 72 6f 6c 28 68 46 69 6c 65 2c 20 46 53 43  ntrol(hFile, FSC
1e60: 54 4c 5f 53 45 54 5f 43 4f 4d 50 52 45 53 53 49  TL_SET_COMPRESSI
1e70: 4f 4e 2c 20 26 75 66 4c 65 76 65 6c 2c 20 73 69  ON, &ufLevel, si
1e80: 7a 65 6f 66 28 75 66 4c 65 76 65 6c 29 2c 20 4e  zeof(ufLevel), N
1e90: 55 4c 4c 2c 20 30 2c 20 26 64 77 2c 20 4e 55 4c  ULL, 0, &dw, NUL
1ea0: 4c 29 3b 0a 0a 20 20 43 6c 6f 73 65 48 61 6e 64  L);..  CloseHand
1eb0: 6c 65 28 68 46 69 6c 65 29 3b 0a 0a 20 20 72 65  le(hFile);..  re
1ec0: 74 75 72 6e 20 6e 3b 0a 23 65 6c 73 65 0a 20 20  turn n;.#else.  
1ed0: 53 65 74 4c 61 73 74 45 72 72 6f 72 28 45 52 52  SetLastError(ERR
1ee0: 4f 52 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44  OR_NOT_SUPPORTED
1ef0: 29 3b 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 23  );.  return 0;.#
1f00: 65 6e 64 69 66 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  endif.}..__decls
1f10: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
1f20: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
1f30: 69 74 65 33 5f 63 6f 6d 70 72 65 73 73 66 69 6c  ite3_compressfil
1f40: 65 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20  e(const wchar_t 
1f50: 2a 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a 7b  *pwszFilename).{
1f60: 0a 20 20 72 65 74 75 72 6e 20 53 65 74 43 6f 6d  .  return SetCom
1f70: 70 72 65 73 73 69 6f 6e 28 70 77 73 7a 46 69 6c  pression(pwszFil
1f80: 65 6e 61 6d 65 2c 20 43 4f 4d 50 52 45 53 53 49  ename, COMPRESSI
1f90: 4f 4e 5f 46 4f 52 4d 41 54 5f 44 45 46 41 55 4c  ON_FORMAT_DEFAUL
1fa0: 54 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  T);.}..__declspe
1fb0: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
1fc0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
1fd0: 65 33 5f 64 65 63 6f 6d 70 72 65 73 73 66 69 6c  e3_decompressfil
1fe0: 65 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20  e(const wchar_t 
1ff0: 2a 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a 7b  *pwszFilename).{
2000: 0a 20 20 72 65 74 75 72 6e 20 53 65 74 43 6f 6d  .  return SetCom
2010: 70 72 65 73 73 69 6f 6e 28 70 77 73 7a 46 69 6c  pression(pwszFil
2020: 65 6e 61 6d 65 2c 20 43 4f 4d 50 52 45 53 53 49  ename, COMPRESSI
2030: 4f 4e 5f 46 4f 52 4d 41 54 5f 4e 4f 4e 45 29 3b  ON_FORMAT_NONE);
2040: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2050: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f  llexport) void _
2060: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
2070: 5f 66 75 6e 63 74 69 6f 6e 5f 66 72 65 65 5f 63  _function_free_c
2080: 61 6c 6c 62 61 63 6b 63 6f 6f 6b 69 65 28 76 6f  allbackcookie(vo
2090: 69 64 20 2a 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20  id *pCookie).{. 
20a0: 20 69 66 20 28 70 43 6f 6f 6b 69 65 29 0a 20 20   if (pCookie).  
20b0: 20 20 66 72 65 65 28 70 43 6f 6f 6b 69 65 29 3b    free(pCookie);
20c0: 0a 7d 0a 0a 2f 2f 20 73 71 6c 69 74 65 33 20 77  .}..// sqlite3 w
20d0: 72 61 70 70 65 72 73 0a 5f 5f 64 65 63 6c 73 70  rappers.__declsp
20e0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
20f0: 6e 73 74 20 63 68 61 72 20 2a 20 5f 5f 73 74 64  nst char * __std
2100: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 6c 69 62  call sqlite3_lib
2110: 76 65 72 73 69 6f 6e 5f 69 6e 74 65 72 6f 70 28  version_interop(
2120: 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63  int *plen).{.  c
2130: 6f 6e 73 74 20 63 68 61 72 20 2a 76 61 6c 20 3d  onst char *val =
2140: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
2150: 69 6f 6e 28 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d  ion();.  *plen =
2160: 20 28 76 61 6c 20 21 3d 20 30 29 20 3f 20 73 74   (val != 0) ? st
2170: 72 6c 65 6e 28 76 61 6c 29 20 3a 20 30 3b 0a 0a  rlen(val) : 0;..
2180: 20 20 72 65 74 75 72 6e 20 76 61 6c 3b 0a 7d 0a    return val;.}.
2190: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
21a0: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
21b0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 6c 69 62  call sqlite3_lib
21c0: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 5f 69  version_number_i
21d0: 6e 74 65 72 6f 70 28 76 6f 69 64 29 0a 7b 0a 20  nterop(void).{. 
21e0: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
21f0: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
2200: 72 28 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  r();.}..__declsp
2210: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
2220: 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  t __stdcall sqli
2230: 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  te3_close_intero
2240: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b  p(sqlite3 *db).{
2250: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
2260: 33 5f 63 6c 6f 73 65 28 64 62 29 3b 0a 7d 0a 0a  3_close(db);.}..
2270: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
2280: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
2290: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 65 78 65 63  all sqlite3_exec
22a0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
22b0: 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72   *db, const char
22c0: 20 2a 73 71 6c 2c 20 73 71 6c 69 74 65 33 5f 63   *sql, sqlite3_c
22d0: 61 6c 6c 62 61 63 6b 20 63 62 2c 20 76 6f 69 64  allback cb, void
22e0: 20 2a 70 76 2c 20 63 68 61 72 20 2a 2a 65 72 72   *pv, char **err
22f0: 6d 73 67 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a  msg, int *plen).
2300: 7b 0a 20 20 69 6e 74 20 6e 20 3d 20 73 71 6c 69  {.  int n = sqli
2310: 74 65 33 5f 65 78 65 63 28 64 62 2c 20 73 71 6c  te3_exec(db, sql
2320: 2c 20 63 62 2c 20 70 76 2c 20 65 72 72 6d 73 67  , cb, pv, errmsg
2330: 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 2a 65  );.  *plen = (*e
2340: 72 72 6d 73 67 20 21 3d 20 30 29 20 3f 20 73 74  rrmsg != 0) ? st
2350: 72 6c 65 6e 28 2a 65 72 72 6d 73 67 29 20 3a 20  rlen(*errmsg) : 
2360: 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d  0;.  return n;.}
2370: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
2380: 65 78 70 6f 72 74 29 20 73 71 6c 69 74 65 5f 69  export) sqlite_i
2390: 6e 74 36 34 20 5f 5f 73 74 64 63 61 6c 6c 20 73  nt64 __stdcall s
23a0: 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
23b0: 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70  rt_rowid_interop
23c0: 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b 0a  (sqlite3 *db).{.
23d0: 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33    return sqlite3
23e0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
23f0: 69 64 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  id(db);.}..__dec
2400: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
2410: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
2420: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69  qlite3_changes_i
2430: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a  nterop(sqlite3 *
2440: 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  db).{.  return s
2450: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 64  qlite3_changes(d
2460: 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  b);.}..__declspe
2470: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
2480: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
2490: 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
24a0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
24b0: 20 2a 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e   *db).{.  return
24c0: 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63   sqlite3_total_c
24d0: 68 61 6e 67 65 73 28 64 62 29 3b 0a 7d 0a 0a 5f  hanges(db);.}.._
24e0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
24f0: 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63  ort) void __stdc
2500: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  all sqlite3_inte
2510: 72 72 75 70 74 5f 69 6e 74 65 72 6f 70 28 73 71  rrupt_interop(sq
2520: 6c 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20 20 73  lite3 *db).{.  s
2530: 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
2540: 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  (db);.}..__decls
2550: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
2560: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
2570: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 5f 69 6e  ite3_complete_in
2580: 74 65 72 6f 70 28 63 6f 6e 73 74 20 63 68 61 72  terop(const char
2590: 20 2a 73 71 6c 29 0a 7b 0a 20 20 72 65 74 75 72   *sql).{.  retur
25a0: 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  n sqlite3_comple
25b0: 74 65 28 73 71 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  te(sql);.}..__de
25c0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
25d0: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
25e0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
25f0: 31 36 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74  16_interop(const
2600: 20 76 6f 69 64 20 2a 73 71 6c 29 0a 7b 0a 20 20   void *sql).{.  
2610: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63  return sqlite3_c
2620: 6f 6d 70 6c 65 74 65 31 36 28 73 71 6c 29 3b 0a  omplete16(sql);.
2630: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
2640: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73  lexport) int __s
2650: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62  tdcall sqlite3_b
2660: 75 73 79 5f 68 61 6e 64 6c 65 72 5f 69 6e 74 65  usy_handler_inte
2670: 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c  rop(sqlite3 *db,
2680: 20 69 6e 74 28 2a 63 62 29 28 76 6f 69 64 20 2a   int(*cb)(void *
2690: 2c 20 69 6e 74 29 2c 20 76 6f 69 64 20 2a 70 76  , int), void *pv
26a0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
26b0: 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
26c0: 72 28 64 62 2c 20 63 62 2c 20 70 76 29 3b 0a 7d  r(db, cb, pv);.}
26d0: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
26e0: 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74  export) int __st
26f0: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 75  dcall sqlite3_bu
2700: 73 79 5f 74 69 6d 65 6f 75 74 5f 69 6e 74 65 72  sy_timeout_inter
2710: 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  op(sqlite3 *db, 
2720: 69 6e 74 20 6d 73 29 0a 7b 0a 20 20 72 65 74 75  int ms).{.  retu
2730: 72 6e 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  rn sqlite3_busy_
2740: 74 69 6d 65 6f 75 74 28 64 62 2c 20 6d 73 29 3b  timeout(db, ms);
2750: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2760: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
2770: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
2780: 67 65 74 5f 74 61 62 6c 65 5f 69 6e 74 65 72 6f  get_table_intero
2790: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63  p(sqlite3 *db, c
27a0: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c 20  onst char *sql, 
27b0: 63 68 61 72 20 2a 2a 2a 72 65 73 75 6c 74 70 2c  char ***resultp,
27c0: 20 69 6e 74 20 2a 6e 72 6f 77 2c 20 69 6e 74 20   int *nrow, int 
27d0: 2a 6e 63 6f 6c 75 6d 6e 2c 20 63 68 61 72 20 2a  *ncolumn, char *
27e0: 2a 65 72 72 6d 73 67 2c 20 69 6e 74 20 2a 70 6c  *errmsg, int *pl
27f0: 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20  en).{.  int n = 
2800: 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
2810: 65 28 64 62 2c 20 73 71 6c 2c 20 72 65 73 75 6c  e(db, sql, resul
2820: 74 70 2c 20 6e 72 6f 77 2c 20 6e 63 6f 6c 75 6d  tp, nrow, ncolum
2830: 6e 2c 20 65 72 72 6d 73 67 29 3b 0a 20 20 2a 70  n, errmsg);.  *p
2840: 6c 65 6e 20 3d 20 28 2a 65 72 72 6d 73 67 20 21  len = (*errmsg !
2850: 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 28 63  = 0) ? strlen((c
2860: 68 61 72 20 2a 29 2a 65 72 72 6d 73 67 29 20 3a  har *)*errmsg) :
2870: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a   0;.  return n;.
2880: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
2890: 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f  lexport) void __
28a0: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
28b0: 66 72 65 65 5f 74 61 62 6c 65 5f 69 6e 74 65 72  free_table_inter
28c0: 6f 70 28 63 68 61 72 20 2a 2a 72 65 73 75 6c 74  op(char **result
28d0: 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66 72  ).{.  sqlite3_fr
28e0: 65 65 5f 74 61 62 6c 65 28 72 65 73 75 6c 74 29  ee_table(result)
28f0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
2900: 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20  dllexport) void 
2910: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
2920: 33 5f 66 72 65 65 5f 69 6e 74 65 72 6f 70 28 63  3_free_interop(c
2930: 68 61 72 20 2a 7a 29 0a 7b 0a 20 20 73 71 6c 69  har *z).{.  sqli
2940: 74 65 33 5f 66 72 65 65 28 7a 29 3b 0a 7d 0a 0a  te3_free(z);.}..
2950: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
2960: 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63  port) int __stdc
2970: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  all sqlite3_open
2980: 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20 63  _interop(const c
2990: 68 61 72 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 71  har*filename, sq
29a0: 6c 69 74 65 33 20 2a 2a 70 70 64 62 29 0a 7b 0a  lite3 **ppdb).{.
29b0: 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33    return sqlite3
29c0: 5f 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20  _open(filename, 
29d0: 70 70 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  ppdb);.}..__decl
29e0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
29f0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
2a00: 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74  lite3_open16_int
2a10: 65 72 6f 70 28 63 6f 6e 73 74 20 76 6f 69 64 20  erop(const void 
2a20: 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 71 6c 69 74  *filename, sqlit
2a30: 65 33 20 2a 2a 70 70 64 62 29 0a 7b 0a 20 20 72  e3 **ppdb).{.  r
2a40: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 6f 70  eturn sqlite3_op
2a50: 65 6e 31 36 28 66 69 6c 65 6e 61 6d 65 2c 20 70  en16(filename, p
2a60: 70 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pdb);.}..__decls
2a70: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69  pec(dllexport) i
2a80: 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  nt __stdcall sql
2a90: 69 74 65 33 5f 65 72 72 63 6f 64 65 5f 69 6e 74  ite3_errcode_int
2aa0: 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62  erop(sqlite3 *db
2ab0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
2ac0: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 64 62 29  ite3_errcode(db)
2ad0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
2ae0: 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74  dllexport) const
2af0: 20 63 68 61 72 20 2a 20 5f 5f 73 74 64 63 61 6c   char * __stdcal
2b00: 6c 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  l sqlite3_errmsg
2b10: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
2b20: 20 2a 64 62 2c 20 69 6e 74 20 2a 70 6c 65 6e 29   *db, int *plen)
2b30: 0a 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  .{.  const char 
2b40: 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f  *pval = sqlite3_
2b50: 65 72 72 6d 73 67 28 64 62 29 3b 0a 20 20 2a 70  errmsg(db);.  *p
2b60: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
2b70: 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29  ) ? strlen(pval)
2b80: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70   : 0;.  return p
2b90: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
2ba0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
2bb0: 6e 73 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64  nst void * __std
2bc0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 65 72 72  call sqlite3_err
2bd0: 6d 73 67 31 36 5f 69 6e 74 65 72 6f 70 28 73 71  msg16_interop(sq
2be0: 6c 69 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 2a  lite3 *db, int *
2bf0: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
2c00: 76 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c  void *pval = sql
2c10: 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 64 62  ite3_errmsg16(db
2c20: 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76  );.  *plen = (pv
2c30: 61 6c 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65  al != 0) ? wcsle
2c40: 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61  n((wchar_t *)pva
2c50: 6c 29 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61  l) * sizeof(wcha
2c60: 72 5f 74 29 3a 20 30 3b 0a 20 20 72 65 74 75 72  r_t): 0;.  retur
2c70: 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63  n pval;.}..__dec
2c80: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
2c90: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
2ca0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
2cb0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a  nterop(sqlite3 *
2cc0: 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  db, const char *
2cd0: 73 71 6c 2c 20 69 6e 74 20 6e 62 79 74 65 73 2c  sql, int nbytes,
2ce0: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
2cf0: 70 70 73 74 6d 74 2c 20 63 6f 6e 73 74 20 63 68  ppstmt, const ch
2d00: 61 72 20 2a 2a 70 7a 74 61 69 6c 2c 20 69 6e 74  ar **pztail, int
2d10: 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69 6e 74 20   *plen).{.  int 
2d20: 6e 20 3d 20 73 71 6c 69 74 65 33 5f 70 72 65 70  n = sqlite3_prep
2d30: 61 72 65 28 64 62 2c 20 73 71 6c 2c 20 6e 62 79  are(db, sql, nby
2d40: 74 65 73 2c 20 70 70 73 74 6d 74 2c 20 70 7a 74  tes, ppstmt, pzt
2d50: 61 69 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20  ail);.  *plen = 
2d60: 28 2a 70 7a 74 61 69 6c 20 21 3d 20 30 29 20 3f  (*pztail != 0) ?
2d70: 20 73 74 72 6c 65 6e 28 2a 70 7a 74 61 69 6c 29   strlen(*pztail)
2d80: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e   : 0;.  return n
2d90: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
2da0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
2db0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
2dc0: 5f 70 72 65 70 61 72 65 31 36 5f 69 6e 74 65 72  _prepare16_inter
2dd0: 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  op(sqlite3 *db, 
2de0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 2c  const void *sql,
2df0: 20 69 6e 74 20 6e 63 68 61 72 73 2c 20 73 71 6c   int nchars, sql
2e00: 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 73 74  ite3_stmt **ppst
2e10: 6d 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  mt, const void *
2e20: 2a 70 7a 74 61 69 6c 2c 20 69 6e 74 20 2a 70 6c  *pztail, int *pl
2e30: 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20  en).{.  int n = 
2e40: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
2e50: 36 28 64 62 2c 20 73 71 6c 2c 20 6e 63 68 61 72  6(db, sql, nchar
2e60: 73 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72  s * sizeof(wchar
2e70: 5f 74 29 2c 20 70 70 73 74 6d 74 2c 20 70 7a 74  _t), ppstmt, pzt
2e80: 61 69 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20  ail);.  *plen = 
2e90: 28 2a 70 7a 74 61 69 6c 20 21 3d 20 30 29 20 3f  (*pztail != 0) ?
2ea0: 20 77 63 73 6c 65 6e 28 28 77 63 68 61 72 5f 74   wcslen((wchar_t
2eb0: 20 2a 29 2a 70 7a 74 61 69 6c 29 20 2a 20 73 69   *)*pztail) * si
2ec0: 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a 20  zeof(wchar_t) : 
2ed0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d  0;.  return n;.}
2ee0: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
2ef0: 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74  export) int __st
2f00: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69  dcall sqlite3_bi
2f10: 6e 64 5f 62 6c 6f 62 5f 69 6e 74 65 72 6f 70 28  nd_blob_interop(
2f20: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
2f30: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 63 6f  mt, int iCol, co
2f40: 6e 73 74 20 76 6f 69 64 20 2a 70 76 2c 20 69 6e  nst void *pv, in
2f50: 74 20 6e 2c 20 76 6f 69 64 28 2a 63 62 29 28 76  t n, void(*cb)(v
2f60: 6f 69 64 2a 29 29 0a 7b 0a 20 20 72 65 74 75 72  oid*)).{.  retur
2f70: 6e 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62  n sqlite3_bind_b
2f80: 6c 6f 62 28 73 74 6d 74 2c 20 69 43 6f 6c 2c 20  lob(stmt, iCol, 
2f90: 70 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f  pv, n, cb);.}.._
2fa0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2fb0: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
2fc0: 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  ll sqlite3_bind_
2fd0: 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73  double_interop(s
2fe0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
2ff0: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 64 6f 75  t, int iCol, dou
3000: 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a 09 72 65 74  ble *val).{..ret
3010: 75 72 6e 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  urn sqlite3_bind
3020: 5f 64 6f 75 62 6c 65 28 73 74 6d 74 2c 69 43 6f  _double(stmt,iCo
3030: 6c 2c 2a 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  l,*val);.}..__de
3040: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
3050: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
3060: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
3070: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
3080: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
3090: 20 69 43 6f 6c 2c 20 69 6e 74 20 76 61 6c 29 0a   iCol, int val).
30a0: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
30b0: 65 33 5f 62 69 6e 64 5f 69 6e 74 28 73 74 6d 74  e3_bind_int(stmt
30c0: 2c 20 69 43 6f 6c 2c 20 76 61 6c 29 3b 0a 7d 0a  , iCol, val);.}.
30d0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
30e0: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
30f0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e  call sqlite3_bin
3100: 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  d_int64_interop(
3110: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
3120: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 73 71  mt, int iCol, sq
3130: 6c 69 74 65 5f 69 6e 74 36 34 20 2a 76 61 6c 29  lite_int64 *val)
3140: 0a 7b 0a 09 72 65 74 75 72 6e 20 73 71 6c 69 74  .{..return sqlit
3150: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 73 74  e3_bind_int64(st
3160: 6d 74 2c 69 43 6f 6c 2c 2a 76 61 6c 29 3b 0a 7d  mt,iCol,*val);.}
3170: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
3180: 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74  export) int __st
3190: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69  dcall sqlite3_bi
31a0: 6e 64 5f 6e 75 6c 6c 5f 69 6e 74 65 72 6f 70 28  nd_null_interop(
31b0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
31c0: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a  mt, int iCol).{.
31d0: 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33    return sqlite3
31e0: 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 74 6d 74 2c  _bind_null(stmt,
31f0: 20 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63   iCol);.}..__dec
3200: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
3210: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
3220: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
3230: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
3240: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
3250: 20 69 43 6f 6c 2c 20 63 6f 6e 73 74 20 63 68 61   iCol, const cha
3260: 72 20 2a 76 61 6c 2c 20 69 6e 74 20 6e 2c 20 76  r *val, int n, v
3270: 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29  oid(*cb)(void *)
3280: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
3290: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 73  ite3_bind_text(s
32a0: 74 6d 74 2c 20 69 43 6f 6c 2c 20 76 61 6c 2c 20  tmt, iCol, val, 
32b0: 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  n, cb);.}..__dec
32c0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
32d0: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
32e0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
32f0: 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  16_interop(sqlit
3300: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69  e3_stmt *stmt, i
3310: 6e 74 20 69 43 6f 6c 2c 20 63 6f 6e 73 74 20 76  nt iCol, const v
3320: 6f 69 64 20 2a 76 61 6c 2c 20 69 6e 74 20 6e 2c  oid *val, int n,
3330: 20 76 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20   void(*cb)(void 
3340: 2a 29 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  *)).{.  return s
3350: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
3360: 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 2c 20 76  16(stmt, iCol, v
3370: 61 6c 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f  al, n, cb);.}.._
3380: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
3390: 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61  ort) int __stdca
33a0: 6c 6c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  ll sqlite3_bind_
33b0: 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 5f  parameter_count_
33c0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
33d0: 73 74 6d 74 20 2a 73 74 6d 74 29 0a 7b 0a 20 20  stmt *stmt).{.  
33e0: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62  return sqlite3_b
33f0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
3400: 75 6e 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f  unt(stmt);.}..__
3410: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
3420: 72 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  rt) const char *
3430: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
3440: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
3450: 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 73  r_name_interop(s
3460: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
3470: 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74  t, int iCol, int
3480: 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73   *plen).{.  cons
3490: 74 20 63 68 61 72 20 2a 70 76 61 6c 20 3d 20 73  t char *pval = s
34a0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
34b0: 6d 65 74 65 72 5f 6e 61 6d 65 28 73 74 6d 74 2c  meter_name(stmt,
34c0: 20 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20   iCol);.  *plen 
34d0: 3d 20 28 70 76 61 6c 20 21 3d 20 30 29 20 3f 20  = (pval != 0) ? 
34e0: 73 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a 20 30  strlen(pval) : 0
34f0: 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c 3b  ;.  return pval;
3500: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3510: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
3520: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
3530: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
3540: 6e 64 65 78 5f 69 6e 74 65 72 6f 70 28 73 71 6c  ndex_interop(sql
3550: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
3560: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
3570: 6d 65 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  me).{.  return s
3580: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
3590: 6d 65 74 65 72 5f 69 6e 64 65 78 28 73 74 6d 74  meter_index(stmt
35a0: 2c 20 7a 4e 61 6d 65 29 3b 0a 7d 0a 0a 5f 5f 64  , zName);.}..__d
35b0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
35c0: 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c  t) int __stdcall
35d0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
35e0: 63 6f 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71  count_interop(sq
35f0: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74  lite3_stmt *stmt
3600: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
3610: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
3620: 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65  t(stmt);.}..__de
3630: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
3640: 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20 5f  ) const char * _
3650: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3660: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
3670: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
3680: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
3690: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
36a0: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76    const char *pv
36b0: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
36c0: 75 6d 6e 5f 6e 61 6d 65 28 73 74 6d 74 2c 20 69  umn_name(stmt, i
36d0: 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20  Col);.  *plen = 
36e0: 28 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 73 74  (pval != 0) ? st
36f0: 72 6c 65 6e 28 70 76 61 6c 29 20 3a 20 30 3b 0a  rlen(pval) : 0;.
3700: 20 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d    return pval;.}
3710: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
3720: 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f  export) const vo
3730: 69 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73  id * __stdcall s
3740: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
3750: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c  me16_interop(sql
3760: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
3770: 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a   int iCol, int *
3780: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
3790: 76 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c  void *pval = sql
37a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
37b0: 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a  16(stmt, iCol);.
37c0: 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20    *plen = (pval 
37d0: 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28  != 0) ? wcslen((
37e0: 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20  wchar_t *)pval) 
37f0: 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74  * sizeof(wchar_t
3800: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
3810: 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pval;.}..__decls
3820: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
3830: 6f 6e 73 74 20 63 68 61 72 20 2a 20 5f 5f 73 74  onst char * __st
3840: 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f  dcall sqlite3_co
3850: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e  lumn_decltype_in
3860: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
3870: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
3880: 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  ol, int *plen).{
3890: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70  .  const char *p
38a0: 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f  val = sqlite3_co
38b0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 74  lumn_decltype(st
38c0: 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c  mt, iCol);.  *pl
38d0: 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30 29  en = (pval != 0)
38e0: 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29 20   ? strlen(pval) 
38f0: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76  : 0;.  return pv
3900: 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  al;.}..__declspe
3910: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e  c(dllexport) con
3920: 73 74 20 76 6f 69 64 20 2a 20 5f 5f 73 74 64 63  st void * __stdc
3930: 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  all sqlite3_colu
3940: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
3950: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
3960: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
3970: 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  ol, int *plen).{
3980: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70  .  const void *p
3990: 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f  val = sqlite3_co
39a0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
39b0: 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a  stmt, iCol);.  *
39c0: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
39d0: 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68  0) ? wcslen((wch
39e0: 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20 73  ar_t *)pval) * s
39f0: 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a  izeof(wchar_t) :
3a00: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
3a10: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
3a20: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
3a30: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
3a40: 33 5f 73 74 65 70 5f 69 6e 74 65 72 6f 70 28 73  3_step_interop(s
3a50: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
3a60: 74 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  t).{.  return sq
3a70: 6c 69 74 65 33 5f 73 74 65 70 28 73 74 6d 74 29  lite3_step(stmt)
3a80: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3a90: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
3aa0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3ab0: 5f 64 61 74 61 5f 63 6f 75 6e 74 5f 69 6e 74 65  _data_count_inte
3ac0: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
3ad0: 20 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75   *stmt).{.  retu
3ae0: 72 6e 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f  rn sqlite3_data_
3af0: 63 6f 75 6e 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a  count(stmt);.}..
3b00: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3b10: 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69 64  port) const void
3b20: 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c   * __stdcall sql
3b30: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
3b40: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
3b50: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
3b60: 20 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72   iCol).{.  retur
3b70: 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  n sqlite3_column
3b80: 5f 62 6c 6f 62 28 73 74 6d 74 2c 20 69 43 6f 6c  _blob(stmt, iCol
3b90: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
3ba0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
3bb0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
3bc0: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 5f 69  3_column_bytes_i
3bd0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
3be0: 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69  tmt *stmt, int i
3bf0: 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  Col).{.  return 
3c00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
3c10: 79 74 65 73 28 73 74 6d 74 2c 20 69 43 6f 6c 29  ytes(stmt, iCol)
3c20: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3c30: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
3c40: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3c50: 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 5f  _column_bytes16_
3c60: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
3c70: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
3c80: 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e  iCol).{.  return
3c90: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
3ca0: 62 79 74 65 73 31 36 28 73 74 6d 74 2c 20 69 43  bytes16(stmt, iC
3cb0: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
3cc0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
3cd0: 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c  id __stdcall sql
3ce0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
3cf0: 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  le_interop(sqlit
3d00: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69  e3_stmt *stmt, i
3d10: 6e 74 20 69 43 6f 6c 2c 20 64 6f 75 62 6c 65 20  nt iCol, double 
3d20: 2a 76 61 6c 29 0a 7b 0a 09 2a 76 61 6c 20 3d 20  *val).{..*val = 
3d30: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
3d40: 6f 75 62 6c 65 28 73 74 6d 74 2c 69 43 6f 6c 29  ouble(stmt,iCol)
3d50: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
3d60: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
3d70: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
3d80: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 5f 69 6e 74 65  _column_int_inte
3d90: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
3da0: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
3db0: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
3dc0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28  ite3_column_int(
3dd0: 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 7d 0a 0a  stmt, iCol);.}..
3de0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
3df0: 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64  port) void __std
3e00: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c  call sqlite3_col
3e10: 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
3e20: 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  p(sqlite3_stmt *
3e30: 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20  stmt, int iCol, 
3e40: 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 2a 76 61  sqlite_int64 *va
3e50: 6c 29 0a 7b 0a 09 2a 76 61 6c 20 3d 20 73 71 6c  l).{..*val = sql
3e60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
3e70: 34 28 73 74 6d 74 2c 69 43 6f 6c 29 3b 0a 7d 0a  4(stmt,iCol);.}.
3e80: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
3e90: 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 75 6e 73  xport) const uns
3ea0: 69 67 6e 65 64 20 63 68 61 72 20 2a 20 5f 5f 73  igned char * __s
3eb0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 63  tdcall sqlite3_c
3ec0: 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72  olumn_text_inter
3ed0: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
3ee0: 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c  *stmt, int iCol,
3ef0: 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20   int *plen).{.  
3f00: 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63  const unsigned c
3f10: 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69  har *pval = sqli
3f20: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28  te3_column_text(
3f30: 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a  stmt, iCol);.  *
3f40: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
3f50: 30 29 20 3f 20 73 74 72 6c 65 6e 28 28 63 68 61  0) ? strlen((cha
3f60: 72 20 2a 29 70 76 61 6c 29 20 3a 20 30 3b 0a 20  r *)pval) : 0;. 
3f70: 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a   return pval;.}.
3f80: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
3f90: 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f 69  xport) const voi
3fa0: 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  d * __stdcall sq
3fb0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
3fc0: 74 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  t16_interop(sqli
3fd0: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20  te3_stmt *stmt, 
3fe0: 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a 70  int iCol, int *p
3ff0: 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 76  len).{.  const v
4000: 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69  oid *pval = sqli
4010: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
4020: 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20  6(stmt, iCol);. 
4030: 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21   *plen = (pval !
4040: 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77  = 0) ? wcslen((w
4050: 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a  char_t *)pval) *
4060: 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29   sizeof(wchar_t)
4070: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76  : 0;.  return pv
4080: 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  al;.}..__declspe
4090: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
40a0: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
40b0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 5f 69  e3_column_type_i
40c0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
40d0: 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69  tmt *stmt, int i
40e0: 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  Col).{.  return 
40f0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4100: 79 70 65 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  ype(stmt, iCol);
4110: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
4120: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f  llexport) int __
4130: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
4140: 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70  finalize_interop
4150: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73  (sqlite3_stmt *s
4160: 74 6d 74 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  tmt).{.  return 
4170: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
4180: 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  (stmt);.}..__dec
4190: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
41a0: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
41b0: 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74  qlite3_reset_int
41c0: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
41d0: 74 20 2a 73 74 6d 74 29 0a 7b 0a 20 20 72 65 74  t *stmt).{.  ret
41e0: 75 72 6e 20 73 71 6c 69 74 65 33 5f 72 65 73 65  urn sqlite3_rese
41f0: 74 28 73 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65  t(stmt);.}..__de
4200: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
4210: 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20  ) int __stdcall 
4220: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
4230: 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28  unction_interop(
4240: 73 71 6c 69 74 65 33 20 2a 70 73 71 6c 2c 20 63  sqlite3 *psql, c
4250: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 75 6e 63  onst char *zFunc
4260: 74 69 6f 6e 4e 61 6d 65 2c 20 69 6e 74 20 6e 41  tionName, int nA
4270: 72 67 2c 20 69 6e 74 20 65 54 65 78 74 52 65 70  rg, int eTextRep
4280: 2c 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43  , SQLITEUSERFUNC
4290: 20 66 75 6e 63 2c 20 53 51 4c 49 54 45 55 53 45   func, SQLITEUSE
42a0: 52 46 55 4e 43 20 66 75 6e 63 73 74 65 70 2c 20  RFUNC funcstep, 
42b0: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66  SQLITEUSERFUNC f
42c0: 75 6e 63 66 69 6e 61 6c 2c 20 76 6f 69 64 20 2a  uncfinal, void *
42d0: 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69  *ppCookie).{.  i
42e0: 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54 45 55 53  nt n;.  SQLITEUS
42f0: 45 52 46 55 4e 43 20 2a 70 20 3d 20 28 53 51 4c  ERFUNC *p = (SQL
4300: 49 54 45 55 53 45 52 46 55 4e 43 20 2a 29 6d 61  ITEUSERFUNC *)ma
4310: 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 53 51 4c 49  lloc(sizeof(SQLI
4320: 54 45 55 53 45 52 46 55 4e 43 29 20 2a 20 33 29  TEUSERFUNC) * 3)
4330: 3b 0a 0a 20 20 70 5b 30 5d 20 3d 20 66 75 6e 63  ;..  p[0] = func
4340: 3b 0a 20 20 70 5b 31 5d 20 3d 20 66 75 6e 63 73  ;.  p[1] = funcs
4350: 74 65 70 3b 0a 20 20 70 5b 32 5d 20 3d 20 66 75  tep;.  p[2] = fu
4360: 6e 63 66 69 6e 61 6c 3b 0a 0a 20 20 2a 70 70 43  ncfinal;..  *ppC
4370: 6f 6f 6b 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20  ookie = 0;..  n 
4380: 3d 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  = sqlite3_create
4390: 5f 66 75 6e 63 74 69 6f 6e 28 70 73 71 6c 2c 20  _function(psql, 
43a0: 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e  zFunctionName, n
43b0: 41 72 67 2c 20 65 54 65 78 74 52 65 70 2c 20 70  Arg, eTextRep, p
43c0: 2c 20 28 66 75 6e 63 20 21 3d 20 30 29 20 3f 20  , (func != 0) ? 
43d0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
43e0: 66 75 6e 63 20 3a 20 30 2c 20 28 66 75 6e 63 73  func : 0, (funcs
43f0: 74 65 70 20 21 3d 20 30 29 20 3f 20 73 71 6c 69  tep != 0) ? sqli
4400: 74 65 33 5f 69 6e 74 65 72 6f 70 5f 73 74 65 70  te3_interop_step
4410: 20 3a 20 30 2c 20 28 66 75 6e 63 66 69 6e 61 6c   : 0, (funcfinal
4420: 20 21 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33   != 0) ? sqlite3
4430: 5f 69 6e 74 65 72 6f 70 5f 66 69 6e 61 6c 20 3a  _interop_final :
4440: 20 30 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20   0);.  if (n != 
4450: 30 29 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a  0).    free(p);.
4460: 20 20 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f    else.    *ppCo
4470: 6f 6b 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74  okie = p;..  ret
4480: 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  urn n;.}..__decl
4490: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
44a0: 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  int __stdcall sq
44b0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
44c0: 63 74 69 6f 6e 31 36 5f 69 6e 74 65 72 6f 70 28  ction16_interop(
44d0: 73 71 6c 69 74 65 33 20 2a 70 73 71 6c 2c 20 76  sqlite3 *psql, v
44e0: 6f 69 64 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61  oid *zFunctionNa
44f0: 6d 65 2c 20 69 6e 74 20 6e 41 72 67 2c 20 69 6e  me, int nArg, in
4500: 74 20 65 54 65 78 74 52 65 70 2c 20 53 51 4c 49  t eTextRep, SQLI
4510: 54 45 55 53 45 52 46 55 4e 43 20 66 75 6e 63 2c  TEUSERFUNC func,
4520: 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20   SQLITEUSERFUNC 
4530: 66 75 6e 63 73 74 65 70 2c 20 53 51 4c 49 54 45  funcstep, SQLITE
4540: 55 53 45 52 46 55 4e 43 20 66 75 6e 63 66 69 6e  USERFUNC funcfin
4550: 61 6c 2c 20 76 6f 69 64 20 2a 2a 70 70 43 6f 6f  al, void **ppCoo
4560: 6b 69 65 29 0a 7b 0a 20 20 69 6e 74 20 6e 3b 0a  kie).{.  int n;.
4570: 20 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43    SQLITEUSERFUNC
4580: 20 2a 70 20 3d 20 28 53 51 4c 49 54 45 55 53 45   *p = (SQLITEUSE
4590: 52 46 55 4e 43 20 2a 29 6d 61 6c 6c 6f 63 28 73  RFUNC *)malloc(s
45a0: 69 7a 65 6f 66 28 53 51 4c 49 54 45 55 53 45 52  izeof(SQLITEUSER
45b0: 46 55 4e 43 29 20 2a 20 33 29 3b 0a 0a 20 20 70  FUNC) * 3);..  p
45c0: 5b 30 5d 20 3d 20 66 75 6e 63 3b 0a 20 20 70 5b  [0] = func;.  p[
45d0: 31 5d 20 3d 20 66 75 6e 63 73 74 65 70 3b 0a 20  1] = funcstep;. 
45e0: 20 70 5b 32 5d 20 3d 20 66 75 6e 63 66 69 6e 61   p[2] = funcfina
45f0: 6c 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69 65 20  l;..  *ppCookie 
4600: 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71 6c 69  = 0;..  n = sqli
4610: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
4620: 69 6f 6e 31 36 28 70 73 71 6c 2c 20 7a 46 75 6e  ion16(psql, zFun
4630: 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e 41 72 67 2c  ctionName, nArg,
4640: 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20 28 66   eTextRep, p, (f
4650: 75 6e 63 20 21 3d 20 30 29 20 3f 20 73 71 6c 69  unc != 0) ? sqli
4660: 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66 75 6e 63  te3_interop_func
4670: 20 3a 20 30 2c 20 28 66 75 6e 63 73 74 65 70 20   : 0, (funcstep 
4680: 21 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33 5f  != 0) ? sqlite3_
4690: 69 6e 74 65 72 6f 70 5f 73 74 65 70 20 3a 20 30  interop_step : 0
46a0: 2c 20 28 66 75 6e 63 66 69 6e 61 6c 20 21 3d 20  , (funcfinal != 
46b0: 30 29 20 3f 20 73 71 6c 69 74 65 33 5f 69 6e 74  0) ? sqlite3_int
46c0: 65 72 6f 70 5f 66 69 6e 61 6c 20 3a 20 30 29 3b  erop_final : 0);
46d0: 0a 20 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20  .  if (n != 0). 
46e0: 20 20 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c     free(p);.  el
46f0: 73 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65  se.    *ppCookie
4700: 20 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20   = p;..  return 
4710: 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  n;.}..__declspec
4720: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
4730: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
4740: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
4750: 6f 6e 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  on_interop(sqlit
4760: 65 33 2a 20 64 62 2c 20 63 6f 6e 73 74 20 63 68  e3* db, const ch
4770: 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 65  ar *zName, int e
4780: 54 65 78 74 52 65 70 2c 20 76 6f 69 64 2a 20 70  TextRep, void* p
4790: 76 55 73 65 72 2c 20 53 51 4c 49 54 45 43 4f 4c  vUser, SQLITECOL
47a0: 4c 41 54 49 4f 4e 20 66 75 6e 63 2c 20 76 6f 69  LATION func, voi
47b0: 64 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a  d **ppCookie).{.
47c0: 20 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54    int n;.  SQLIT
47d0: 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20  ECOLLATION *p = 
47e0: 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e  (SQLITECOLLATION
47f0: 20 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66   *)malloc(sizeof
4800: 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e  (SQLITECOLLATION
4810: 29 29 3b 0a 20 20 0a 20 20 70 5b 30 5d 20 3d 20  ));.  .  p[0] = 
4820: 66 75 6e 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b  func;..  *ppCook
4830: 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73  ie = 0;..  n = s
4840: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
4850: 6c 6c 61 74 69 6f 6e 28 64 62 2c 20 7a 4e 61 6d  llation(db, zNam
4860: 65 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20  e, eTextRep, p, 
4870: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
4880: 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 29 3b 0a  collationfunc);.
4890: 20 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20 20    if (n != 0).  
48a0: 20 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c 73    free(p);.  els
48b0: 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20  e.    *ppCookie 
48c0: 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e  = p;..  return n
48d0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
48e0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 5f  dllexport) int _
48f0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
4900: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
4910: 6e 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  n16_interop(sqli
4920: 74 65 33 2a 20 64 62 2c 20 63 6f 6e 73 74 20 76  te3* db, const v
4930: 6f 69 64 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20  oid *zName, int 
4940: 65 54 65 78 74 52 65 70 2c 20 76 6f 69 64 2a 20  eTextRep, void* 
4950: 70 76 55 73 65 72 2c 20 53 51 4c 49 54 45 43 4f  pvUser, SQLITECO
4960: 4c 4c 41 54 49 4f 4e 20 66 75 6e 63 2c 20 76 6f  LLATION func, vo
4970: 69 64 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b  id **ppCookie).{
4980: 0a 20 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49  .  int n;.  SQLI
4990: 54 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d  TECOLLATION *p =
49a0: 20 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f   (SQLITECOLLATIO
49b0: 4e 20 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f  N *)malloc(sizeo
49c0: 66 28 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f  f(SQLITECOLLATIO
49d0: 4e 29 29 3b 0a 20 20 0a 20 20 70 5b 30 5d 20 3d  N));.  .  p[0] =
49e0: 20 66 75 6e 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f   func;..  *ppCoo
49f0: 6b 69 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20  kie = 0;..  n = 
4a00: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
4a10: 6f 6c 6c 61 74 69 6f 6e 31 36 28 64 62 2c 20 28  ollation16(db, (
4a20: 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 7a 4e 61  const char *)zNa
4a30: 6d 65 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c  me, eTextRep, p,
4a40: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70   sqlite3_interop
4a50: 5f 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 29 3b  _collationfunc);
4a60: 0a 20 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20  .  if (n != 0). 
4a70: 20 20 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c     free(p);.  el
4a80: 73 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65  se.    *ppCookie
4a90: 20 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20   = p;..  return 
4aa0: 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  n;.}..__declspec
4ab0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
4ac0: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
4ad0: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
4ae0: 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  t_interop(sqlite
4af0: 33 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 29  3_context *pctx)
4b00: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
4b10: 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f  te3_aggregate_co
4b20: 75 6e 74 28 70 63 74 78 29 3b 0a 7d 0a 0a 5f 5f  unt(pctx);.}..__
4b30: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
4b40: 72 74 29 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  rt) const void *
4b50: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
4b60: 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 5f 69 6e  e3_value_blob_in
4b70: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61  terop(sqlite3_va
4b80: 6c 75 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65  lue *val).{.  re
4b90: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c  turn sqlite3_val
4ba0: 75 65 5f 62 6c 6f 62 28 76 61 6c 29 3b 0a 7d 0a  ue_blob(val);.}.
4bb0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
4bc0: 78 70 6f 72 74 29 20 69 6e 74 20 5f 5f 73 74 64  xport) int __std
4bd0: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c  call sqlite3_val
4be0: 75 65 5f 62 79 74 65 73 5f 69 6e 74 65 72 6f 70  ue_bytes_interop
4bf0: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a  (sqlite3_value *
4c00: 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  val).{.  return 
4c10: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
4c20: 74 65 73 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64  tes(val);.}..__d
4c30: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
4c40: 74 29 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c  t) int __stdcall
4c50: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
4c60: 79 74 65 73 31 36 5f 69 6e 74 65 72 6f 70 28 73  ytes16_interop(s
4c70: 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 76 61  qlite3_value *va
4c80: 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  l).{.  return sq
4c90: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
4ca0: 73 31 36 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64  s16(val);.}..__d
4cb0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
4cc0: 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c  t) void __stdcal
4cd0: 6c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  l sqlite3_value_
4ce0: 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73  double_interop(s
4cf0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 70 76  qlite3_value *pv
4d00: 61 6c 2c 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29  al, double *val)
4d10: 0a 7b 0a 20 20 2a 76 61 6c 20 3d 20 73 71 6c 69  .{.  *val = sqli
4d20: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
4d30: 28 70 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  (pval);.}..__dec
4d40: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
4d50: 20 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 73   int __stdcall s
4d60: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4d70: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
4d80: 5f 76 61 6c 75 65 20 2a 76 61 6c 29 0a 7b 0a 20  _value *val).{. 
4d90: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
4da0: 76 61 6c 75 65 5f 69 6e 74 28 76 61 6c 29 3b 0a  value_int(val);.
4db0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
4dc0: 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f  lexport) void __
4dd0: 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  stdcall sqlite3_
4de0: 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
4df0: 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  rop(sqlite3_valu
4e00: 65 20 2a 70 76 61 6c 2c 20 73 71 6c 69 74 65 5f  e *pval, sqlite_
4e10: 69 6e 74 36 34 20 2a 76 61 6c 29 0a 7b 0a 20 20  int64 *val).{.  
4e20: 2a 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 76  *val = sqlite3_v
4e30: 61 6c 75 65 5f 69 6e 74 36 34 28 70 76 61 6c 29  alue_int64(pval)
4e40: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
4e50: 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74  dllexport) const
4e60: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a   unsigned char *
4e70: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
4e80: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e  e3_value_text_in
4e90: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61  terop(sqlite3_va
4ea0: 6c 75 65 20 2a 76 61 6c 2c 20 69 6e 74 20 2a 70  lue *val, int *p
4eb0: 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20 75  len).{.  const u
4ec0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 76  nsigned char *pv
4ed0: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 76 61 6c  al = sqlite3_val
4ee0: 75 65 5f 74 65 78 74 28 76 61 6c 29 3b 0a 20 20  ue_text(val);.  
4ef0: 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d  *plen = (pval !=
4f00: 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 28 63 68   0) ? strlen((ch
4f10: 61 72 20 2a 29 70 76 61 6c 29 20 3a 20 30 3b 0a  ar *)pval) : 0;.
4f20: 20 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a 7d    return pval;.}
4f30: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
4f40: 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76 6f  export) const vo
4f50: 69 64 20 2a 20 5f 5f 73 74 64 63 61 6c 6c 20 73  id * __stdcall s
4f60: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
4f70: 74 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  t16_interop(sqli
4f80: 74 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c 2c 20  te3_value *val, 
4f90: 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63  int *plen).{.  c
4fa0: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20  onst void *pval 
4fb0: 3d 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  = sqlite3_value_
4fc0: 74 65 78 74 31 36 28 76 61 6c 29 3b 0a 20 20 2a  text16(val);.  *
4fd0: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
4fe0: 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68  0) ? wcslen((wch
4ff0: 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20 73  ar_t *)pval) * s
5000: 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a  izeof(wchar_t) :
5010: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
5020: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
5030: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
5040: 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65  __stdcall sqlite
5050: 33 5f 76 61 6c 75 65 5f 74 79 70 65 5f 69 6e 74  3_value_type_int
5060: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c  erop(sqlite3_val
5070: 75 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74  ue *val).{.  ret
5080: 75 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  urn sqlite3_valu
5090: 65 5f 74 79 70 65 28 76 61 6c 29 3b 0a 7d 0a 0a  e_type(val);.}..
50a0: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
50b0: 70 6f 72 74 29 20 76 6f 69 64 20 2a 20 5f 5f 73  port) void * __s
50c0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 61  tdcall sqlite3_a
50d0: 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74  ggregate_context
50e0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
50f0: 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20  _context *pctx, 
5100: 69 6e 74 20 6e 29 0a 7b 0a 20 20 72 65 74 75 72  int n).{.  retur
5110: 6e 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  n sqlite3_aggreg
5120: 61 74 65 5f 63 6f 6e 74 65 78 74 28 70 63 74 78  ate_context(pctx
5130: 2c 20 6e 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  , n);.}..__decls
5140: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76  pec(dllexport) v
5150: 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71  oid __stdcall sq
5160: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
5170: 62 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  b_interop(sqlite
5180: 33 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 20  3_context *ctx, 
5190: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 2c 20  const void *pv, 
51a0: 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 63 62 29  int n, void(*cb)
51b0: 28 76 6f 69 64 20 2a 29 29 0a 7b 0a 20 20 73 71  (void *)).{.  sq
51c0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
51d0: 62 28 63 74 78 2c 20 70 76 2c 20 6e 2c 20 63 62  b(ctx, pv, n, cb
51e0: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
51f0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64  (dllexport) void
5200: 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74   __stdcall sqlit
5210: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
5220: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
5230: 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20  _context *pctx, 
5240: 64 6f 75 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a 20  double *val).{. 
5250: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
5260: 64 6f 75 62 6c 65 28 70 63 74 78 2c 20 2a 76 61  double(pctx, *va
5270: 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  l);.}..__declspe
5280: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69  c(dllexport) voi
5290: 64 20 5f 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69  d __stdcall sqli
52a0: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 5f 69  te3_result_int_i
52b0: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63  nterop(sqlite3_c
52c0: 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20 69 6e  ontext *pctx, in
52d0: 74 20 76 61 6c 29 0a 7b 0a 20 20 73 71 6c 69 74  t val).{.  sqlit
52e0: 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 70 63  e3_result_int(pc
52f0: 74 78 2c 20 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64  tx, val);.}..__d
5300: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
5310: 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c  t) void __stdcal
5320: 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  l sqlite3_result
5330: 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 73  _int64_interop(s
5340: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a  qlite3_context *
5350: 70 63 74 78 2c 20 73 71 6c 69 74 65 5f 69 6e 74  pctx, sqlite_int
5360: 36 34 20 2a 76 61 6c 29 0a 7b 0a 20 20 73 71 6c  64 *val).{.  sql
5370: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
5380: 34 28 70 63 74 78 2c 20 2a 76 61 6c 29 3b 0a 7d  4(pctx, *val);.}
5390: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
53a0: 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73  export) void __s
53b0: 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72  tdcall sqlite3_r
53c0: 65 73 75 6c 74 5f 6e 75 6c 6c 5f 69 6e 74 65 72  esult_null_inter
53d0: 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  op(sqlite3_conte
53e0: 78 74 20 2a 70 63 74 78 29 0a 7b 0a 20 20 73 71  xt *pctx).{.  sq
53f0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c  lite3_result_nul
5400: 6c 28 70 63 74 78 29 3b 0a 7d 0a 0a 5f 5f 64 65  l(pctx);.}..__de
5410: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
5420: 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c 6c  ) void __stdcall
5430: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
5440: 65 72 72 6f 72 5f 69 6e 74 65 72 6f 70 28 73 71  error_interop(sq
5450: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63  lite3_context *c
5460: 74 78 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  tx, const char *
5470: 70 76 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 73  pv, int n).{.  s
5480: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
5490: 72 6f 72 28 63 74 78 2c 20 70 76 2c 20 6e 29 3b  ror(ctx, pv, n);
54a0: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
54b0: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 5f  llexport) void _
54c0: 5f 73 74 64 63 61 6c 6c 20 73 71 6c 69 74 65 33  _stdcall sqlite3
54d0: 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 5f  _result_error16_
54e0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
54f0: 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 20 63 6f  context *ctx, co
5500: 6e 73 74 20 76 6f 69 64 20 2a 70 76 2c 20 69 6e  nst void *pv, in
5510: 74 20 6e 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33  t n).{.  sqlite3
5520: 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
5530: 63 74 78 2c 20 70 76 2c 20 6e 29 3b 0a 7d 0a 0a  ctx, pv, n);.}..
5540: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
5550: 70 6f 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64  port) void __std
5560: 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 73  call sqlite3_res
5570: 75 6c 74 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70  ult_text_interop
5580: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
5590: 20 2a 63 74 78 2c 20 63 6f 6e 73 74 20 63 68 61   *ctx, const cha
55a0: 72 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f  r *pv, int n, vo
55b0: 69 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29  id(*cb)(void *))
55c0: 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73  .{.  sqlite3_res
55d0: 75 6c 74 5f 74 65 78 74 28 63 74 78 2c 20 70 76  ult_text(ctx, pv
55e0: 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f 64  , n, cb);.}..__d
55f0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
5600: 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61 6c  t) void __stdcal
5610: 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  l sqlite3_result
5620: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
5630: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
5640: 2a 63 74 78 2c 20 63 6f 6e 73 74 20 76 6f 69 64  *ctx, const void
5650: 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f 69   *pv, int n, voi
5660: 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29 0a  d(*cb)(void *)).
5670: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75  {.  sqlite3_resu
5680: 6c 74 5f 74 65 78 74 31 36 28 63 74 78 2c 20 70  lt_text16(ctx, p
5690: 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f  v, n, cb);.}..__
56a0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
56b0: 72 74 29 20 76 6f 69 64 20 5f 5f 73 74 64 63 61  rt) void __stdca
56c0: 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 63  ll sqlite3_realc
56d0: 6f 6c 6e 61 6d 65 73 28 73 71 6c 69 74 65 33 20  olnames(sqlite3 
56e0: 2a 64 62 2c 20 69 6e 74 20 62 4f 6e 29 0a 7b 0a  *db, int bOn).{.
56f0: 20 20 69 66 20 28 62 4f 6e 29 0a 20 20 20 20 64    if (bOn).    d
5700: 62 2d 3e 66 6c 61 67 73 20 7c 3d 20 30 78 30 31  b->flags |= 0x01
5710: 30 30 30 30 30 30 3b 0a 20 20 65 6c 73 65 0a 20  000000;.  else. 
5720: 20 20 20 64 62 2d 3e 66 6c 61 67 73 20 26 3d 20     db->flags &= 
5730: 28 7e 30 78 30 31 30 30 30 30 30 30 29 3b 0a 7d  (~0x01000000);.}
5740: 0a 0a 23 65 6e 64 69 66 20 2f 2f 20 4f 53 5f 57  ..#endif // OS_W
5750: 49 4e 0a                                         IN.