System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact bdba983e44173fa68062d1abe6f4a866dfd22693:


0000: 23 69 6e 63 6c 75 64 65 20 22 73 72 63 2f 73 71  #include "src/sq
0010: 6c 69 74 65 69 6e 74 2e 68 22 0a 23 69 6e 63 6c  liteint.h".#incl
0020: 75 64 65 20 22 73 72 63 5c 6f 73 2e 68 22 0a 23  ude "src\os.h".#
0030: 69 6e 63 6c 75 64 65 20 3c 74 63 68 61 72 2e 68  include <tchar.h
0040: 3e 0a 0a 23 69 66 20 4e 44 45 42 55 47 0a 23 69  >..#if NDEBUG.#i
0050: 66 20 5f 57 49 4e 33 32 5f 57 43 45 0a 23 69 6e  f _WIN32_WCE.#in
0060: 63 6c 75 64 65 20 22 6d 65 72 67 65 2e 68 22 0a  clude "merge.h".
0070: 23 65 6c 73 65 0a 23 69 6e 63 6c 75 64 65 20 22  #else.#include "
0080: 6d 65 72 67 65 5f 66 75 6c 6c 2e 68 22 0a 23 65  merge_full.h".#e
0090: 6e 64 69 66 20 2f 2f 20 5f 57 49 4e 33 32 5f 57  ndif // _WIN32_W
00a0: 43 45 0a 23 65 6e 64 69 66 20 2f 2f 20 4e 44 45  CE.#endif // NDE
00b0: 42 55 47 0a 0a 2f 2f 20 49 4d 50 4f 52 54 41 4e  BUG..// IMPORTAN
00c0: 54 3a 20 54 68 69 73 20 70 6c 61 63 65 68 6f 6c  T: This placehol
00d0: 64 65 72 20 69 73 20 68 65 72 65 20 66 6f 72 20  der is here for 
00e0: 61 20 72 65 61 73 6f 6e 21 21 21 0a 2f 2f 20 4f  a reason!!!.// O
00f0: 6e 20 74 68 65 20 43 6f 6d 70 61 63 74 20 46 72  n the Compact Fr
0100: 61 6d 65 77 6f 72 6b 20 74 68 65 20 2e 64 61 74  amework the .dat
0110: 61 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65  a section of the
0120: 20 44 4c 4c 20 6d 75 73 74 20 68 61 76 65 20 69   DLL must have i
0130: 74 73 20 52 61 77 44 61 74 61 53 69 7a 65 20 6c  ts RawDataSize l
0140: 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 56  arger than the V
0150: 69 72 74 75 61 6c 53 69 7a 65 21 0a 2f 2f 20 49  irtualSize!.// I
0160: 66 20 69 74 73 20 6e 6f 74 2c 20 73 74 72 6f 6e  f its not, stron
0170: 67 20 6e 61 6d 65 20 76 61 6c 69 64 61 74 69 6f  g name validatio
0180: 6e 20 77 69 6c 6c 20 66 61 69 6c 20 61 6e 64 20  n will fail and 
0190: 6f 74 68 65 72 20 62 61 64 20 74 68 69 6e 67 73  other bad things
01a0: 20 77 69 6c 6c 20 68 61 70 70 65 6e 2e 0a 44 57   will happen..DW
01b0: 4f 52 44 20 5f 70 68 5b 5d 20 3d 20 7b 30 2c 31  ORD _ph[] = {0,1
01c0: 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c 39  ,2,3,4,5,6,7,8,9
01d0: 2c 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 2c  ,10,11,12,13,14,
01e0: 31 35 7d 3b 0a 0a 23 69 66 64 65 66 20 4f 53 5f  15};..#ifdef OS_
01f0: 57 49 4e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 74  WIN..#include <t
0200: 63 68 61 72 2e 68 3e 0a 0a 74 79 70 65 64 65 66  char.h>..typedef
0210: 20 76 6f 69 64 20 28 57 49 4e 41 50 49 20 2a 53   void (WINAPI *S
0220: 51 4c 49 54 45 55 53 45 52 46 55 4e 43 29 28 76  QLITEUSERFUNC)(v
0230: 6f 69 64 20 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  oid *, int, void
0240: 20 2a 2a 29 3b 0a 74 79 70 65 64 65 66 20 69 6e   **);.typedef in
0250: 74 20 20 28 57 49 4e 41 50 49 20 2a 53 51 4c 49  t  (WINAPI *SQLI
0260: 54 45 43 4f 4c 4c 41 54 49 4f 4e 29 28 69 6e 74  TECOLLATION)(int
0270: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2c 20  , const void *, 
0280: 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  int, const void*
0290: 29 3b 0a 0a 74 79 70 65 64 65 66 20 76 6f 69 64  );..typedef void
02a0: 20 28 57 49 4e 41 50 49 20 2a 53 51 4c 49 54 45   (WINAPI *SQLITE
02b0: 55 50 44 41 54 45 48 4f 4f 4b 29 28 69 6e 74 2c  UPDATEHOOK)(int,
02c0: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 69   const char *, i
02d0: 6e 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  nt, const char *
02e0: 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65 5f 69 6e  , int, sqlite_in
02f0: 74 36 34 29 3b 0a 74 79 70 65 64 65 66 20 69 6e  t64);.typedef in
0300: 74 20 20 28 57 49 4e 41 50 49 20 2a 53 51 4c 49  t  (WINAPI *SQLI
0310: 54 45 43 4f 4d 4d 49 54 48 4f 4f 4b 29 28 29 3b  TECOMMITHOOK)();
0320: 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 57  .typedef void (W
0330: 49 4e 41 50 49 20 2a 53 51 4c 49 54 45 52 4f 4c  INAPI *SQLITEROL
0340: 4c 42 41 43 4b 48 4f 4f 4b 29 28 29 3b 0a 0a 74  LBACKHOOK)();..t
0350: 79 70 65 64 65 66 20 48 41 4e 44 4c 45 20 28 57  ypedef HANDLE (W
0360: 49 4e 41 50 49 20 2a 43 52 45 41 54 45 46 49 4c  INAPI *CREATEFIL
0370: 45 57 29 28 0a 20 20 20 20 4c 50 43 57 53 54 52  EW)(.    LPCWSTR
0380: 2c 0a 20 20 20 20 44 57 4f 52 44 2c 0a 20 20 20  ,.    DWORD,.   
0390: 20 44 57 4f 52 44 2c 0a 20 20 20 20 4c 50 53 45   DWORD,.    LPSE
03a0: 43 55 52 49 54 59 5f 41 54 54 52 49 42 55 54 45  CURITY_ATTRIBUTE
03b0: 53 2c 0a 20 20 20 20 44 57 4f 52 44 2c 0a 20 20  S,.    DWORD,.  
03c0: 20 20 44 57 4f 52 44 2c 0a 20 20 20 20 48 41 4e    DWORD,.    HAN
03d0: 44 4c 45 29 3b 0a 0a 2f 2f 20 43 61 6c 6c 62 61  DLE);..// Callba
03e0: 63 6b 20 77 72 61 70 70 65 72 73 0a 69 6e 74 20  ck wrappers.int 
03f0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f  sqlite3_interop_
0400: 63 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 28 76 6f  collationfunc(vo
0410: 69 64 20 2a 70 76 2c 20 69 6e 74 20 6c 65 6e 31  id *pv, int len1
0420: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76  , const void *pv
0430: 31 2c 20 69 6e 74 20 6c 65 6e 32 2c 20 63 6f 6e  1, int len2, con
0440: 73 74 20 76 6f 69 64 20 2a 70 76 32 29 0a 7b 0a  st void *pv2).{.
0450: 20 20 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f    SQLITECOLLATIO
0460: 4e 20 2a 70 20 3d 20 28 53 51 4c 49 54 45 43 4f  N *p = (SQLITECO
0470: 4c 4c 41 54 49 4f 4e 20 2a 29 70 76 3b 0a 20 20  LLATION *)pv;.  
0480: 72 65 74 75 72 6e 20 70 5b 30 5d 28 6c 65 6e 31  return p[0](len1
0490: 2c 20 70 76 31 2c 20 6c 65 6e 32 2c 20 70 76 32  , pv1, len2, pv2
04a0: 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73 71 6c 69 74  );.}..void sqlit
04b0: 65 33 5f 69 6e 74 65 72 6f 70 5f 66 75 6e 63 28  e3_interop_func(
04c0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
04d0: 2a 70 63 74 78 2c 20 69 6e 74 20 6e 2c 20 73 71  *pctx, int n, sq
04e0: 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 2a 70 76  lite3_value **pv
04f0: 29 0a 7b 0a 20 20 53 51 4c 49 54 45 55 53 45 52  ).{.  SQLITEUSER
0500: 46 55 4e 43 20 2a 70 66 20 3d 20 28 53 51 4c 49  FUNC *pf = (SQLI
0510: 54 45 55 53 45 52 46 55 4e 43 20 2a 29 73 71 6c  TEUSERFUNC *)sql
0520: 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61 28 70  ite3_user_data(p
0530: 63 74 78 29 3b 0a 20 20 70 66 5b 30 5d 28 70 63  ctx);.  pf[0](pc
0540: 74 78 2c 20 6e 2c 20 28 76 6f 69 64 20 2a 2a 29  tx, n, (void **)
0550: 70 76 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73 71 6c  pv);.}..void sql
0560: 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 73 74 65  ite3_interop_ste
0570: 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  p(sqlite3_contex
0580: 74 20 2a 70 63 74 78 2c 20 69 6e 74 20 6e 2c 20  t *pctx, int n, 
0590: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 2a  sqlite3_value **
05a0: 70 76 29 0a 7b 0a 20 20 53 51 4c 49 54 45 55 53  pv).{.  SQLITEUS
05b0: 45 52 46 55 4e 43 20 2a 70 66 20 3d 20 28 53 51  ERFUNC *pf = (SQ
05c0: 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a 29 73  LITEUSERFUNC *)s
05d0: 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61  qlite3_user_data
05e0: 28 70 63 74 78 29 3b 0a 20 20 70 66 5b 31 5d 28  (pctx);.  pf[1](
05f0: 70 63 74 78 2c 20 6e 2c 20 28 76 6f 69 64 20 2a  pctx, n, (void *
0600: 2a 29 70 76 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73  *)pv);.}..void s
0610: 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66  qlite3_interop_f
0620: 69 6e 61 6c 28 73 71 6c 69 74 65 33 5f 63 6f 6e  inal(sqlite3_con
0630: 74 65 78 74 20 2a 70 63 74 78 29 0a 7b 0a 20 20  text *pctx).{.  
0640: 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 20 2a  SQLITEUSERFUNC *
0650: 70 66 20 3d 20 28 53 51 4c 49 54 45 55 53 45 52  pf = (SQLITEUSER
0660: 46 55 4e 43 20 2a 29 73 71 6c 69 74 65 33 5f 75  FUNC *)sqlite3_u
0670: 73 65 72 5f 64 61 74 61 28 70 63 74 78 29 3b 0a  ser_data(pctx);.
0680: 20 20 70 66 5b 32 5d 28 70 63 74 78 2c 20 30 2c    pf[2](pctx, 0,
0690: 20 30 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70   0);.}..__declsp
06a0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
06b0: 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65  id WINAPI sqlite
06c0: 33 5f 73 6c 65 65 70 5f 69 6e 74 65 72 6f 70 28  3_sleep_interop(
06d0: 69 6e 74 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73  int milliseconds
06e0: 29 0a 7b 0a 20 20 53 6c 65 65 70 28 6d 69 6c 6c  ).{.  Sleep(mill
06f0: 69 73 65 63 6f 6e 64 73 29 3b 0a 7d 0a 0a 69 6e  iseconds);.}..in
0700: 74 20 53 65 74 43 6f 6d 70 72 65 73 73 69 6f 6e  t SetCompression
0710: 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74 20 2a  (const wchar_t *
0720: 70 77 73 7a 46 69 6c 65 6e 61 6d 65 2c 20 75 6e  pwszFilename, un
0730: 73 69 67 6e 65 64 20 73 68 6f 72 74 20 75 66 4c  signed short ufL
0740: 65 76 65 6c 29 0a 7b 0a 23 69 66 64 65 66 20 46  evel).{.#ifdef F
0750: 53 43 54 4c 5f 53 45 54 5f 43 4f 4d 50 52 45 53  SCTL_SET_COMPRES
0760: 53 49 4f 4e 0a 20 20 48 4d 4f 44 55 4c 45 20 68  SION.  HMODULE h
0770: 4d 6f 64 20 3d 20 47 65 74 4d 6f 64 75 6c 65 48  Mod = GetModuleH
0780: 61 6e 64 6c 65 28 5f 54 28 22 4b 45 52 4e 45 4c  andle(_T("KERNEL
0790: 33 32 22 29 29 3b 0a 20 20 43 52 45 41 54 45 46  32"));.  CREATEF
07a0: 49 4c 45 57 20 70 66 75 6e 63 3b 0a 20 20 48 41  ILEW pfunc;.  HA
07b0: 4e 44 4c 45 20 68 46 69 6c 65 3b 0a 20 20 75 6e  NDLE hFile;.  un
07c0: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 64 77 20 3d  signed long dw =
07d0: 20 30 3b 0a 20 20 69 6e 74 20 6e 3b 0a 0a 20 20   0;.  int n;..  
07e0: 69 66 20 28 68 4d 6f 64 20 3d 3d 20 4e 55 4c 4c  if (hMod == NULL
07f0: 29 0a 20 20 7b 0a 20 20 20 20 53 65 74 4c 61 73  ).  {.    SetLas
0800: 74 45 72 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54  tError(ERROR_NOT
0810: 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a 20 20 20  _SUPPORTED);.   
0820: 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 0a   return 0;.  }..
0830: 20 20 70 66 75 6e 63 20 3d 20 28 43 52 45 41 54    pfunc = (CREAT
0840: 45 46 49 4c 45 57 29 47 65 74 50 72 6f 63 41 64  EFILEW)GetProcAd
0850: 64 72 65 73 73 28 68 4d 6f 64 2c 20 5f 54 28 22  dress(hMod, _T("
0860: 43 72 65 61 74 65 46 69 6c 65 57 22 29 29 3b 0a  CreateFileW"));.
0870: 20 20 69 66 20 28 70 66 75 6e 63 20 3d 3d 20 4e    if (pfunc == N
0880: 55 4c 4c 29 0a 20 20 7b 0a 20 20 20 20 53 65 74  ULL).  {.    Set
0890: 4c 61 73 74 45 72 72 6f 72 28 45 52 52 4f 52 5f  LastError(ERROR_
08a0: 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44 29 3b 0a  NOT_SUPPORTED);.
08b0: 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20      return 0;.  
08c0: 7d 0a 0a 20 20 68 46 69 6c 65 20 3d 20 70 66 75  }..  hFile = pfu
08d0: 6e 63 28 70 77 73 7a 46 69 6c 65 6e 61 6d 65 2c  nc(pwszFilename,
08e0: 20 47 45 4e 45 52 49 43 5f 52 45 41 44 7c 47 45   GENERIC_READ|GE
08f0: 4e 45 52 49 43 5f 57 52 49 54 45 2c 20 30 2c 20  NERIC_WRITE, 0, 
0900: 4e 55 4c 4c 2c 20 4f 50 45 4e 5f 45 58 49 53 54  NULL, OPEN_EXIST
0910: 49 4e 47 2c 20 46 49 4c 45 5f 41 54 54 52 49 42  ING, FILE_ATTRIB
0920: 55 54 45 5f 4e 4f 52 4d 41 4c 2c 20 4e 55 4c 4c  UTE_NORMAL, NULL
0930: 29 3b 0a 20 20 69 66 20 28 68 46 69 6c 65 20 3d  );.  if (hFile =
0940: 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75  = NULL).    retu
0950: 72 6e 20 30 3b 0a 0a 20 20 6e 20 3d 20 44 65 76  rn 0;..  n = Dev
0960: 69 63 65 49 6f 43 6f 6e 74 72 6f 6c 28 68 46 69  iceIoControl(hFi
0970: 6c 65 2c 20 46 53 43 54 4c 5f 53 45 54 5f 43 4f  le, FSCTL_SET_CO
0980: 4d 50 52 45 53 53 49 4f 4e 2c 20 26 75 66 4c 65  MPRESSION, &ufLe
0990: 76 65 6c 2c 20 73 69 7a 65 6f 66 28 75 66 4c 65  vel, sizeof(ufLe
09a0: 76 65 6c 29 2c 20 4e 55 4c 4c 2c 20 30 2c 20 26  vel), NULL, 0, &
09b0: 64 77 2c 20 4e 55 4c 4c 29 3b 0a 0a 20 20 43 6c  dw, NULL);..  Cl
09c0: 6f 73 65 48 61 6e 64 6c 65 28 68 46 69 6c 65 29  oseHandle(hFile)
09d0: 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 23  ;..  return n;.#
09e0: 65 6c 73 65 0a 20 20 53 65 74 4c 61 73 74 45 72  else.  SetLastEr
09f0: 72 6f 72 28 45 52 52 4f 52 5f 4e 4f 54 5f 53 55  ror(ERROR_NOT_SU
0a00: 50 50 4f 52 54 45 44 29 3b 0a 20 20 72 65 74 75  PPORTED);.  retu
0a10: 72 6e 20 30 3b 0a 23 65 6e 64 69 66 0a 7d 0a 0a  rn 0;.#endif.}..
0a20: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
0a30: 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49  port) int WINAPI
0a40: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 72 65 73   sqlite3_compres
0a50: 73 66 69 6c 65 28 63 6f 6e 73 74 20 77 63 68 61  sfile(const wcha
0a60: 72 5f 74 20 2a 70 77 73 7a 46 69 6c 65 6e 61 6d  r_t *pwszFilenam
0a70: 65 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 53 65  e).{.  return Se
0a80: 74 43 6f 6d 70 72 65 73 73 69 6f 6e 28 70 77 73  tCompression(pws
0a90: 7a 46 69 6c 65 6e 61 6d 65 2c 20 43 4f 4d 50 52  zFilename, COMPR
0aa0: 45 53 53 49 4f 4e 5f 46 4f 52 4d 41 54 5f 44 45  ESSION_FORMAT_DE
0ab0: 46 41 55 4c 54 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  FAULT);.}..__dec
0ac0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
0ad0: 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c 69   int WINAPI sqli
0ae0: 74 65 33 5f 64 65 63 6f 6d 70 72 65 73 73 66 69  te3_decompressfi
0af0: 6c 65 28 63 6f 6e 73 74 20 77 63 68 61 72 5f 74  le(const wchar_t
0b00: 20 2a 70 77 73 7a 46 69 6c 65 6e 61 6d 65 29 0a   *pwszFilename).
0b10: 7b 0a 20 20 72 65 74 75 72 6e 20 53 65 74 43 6f  {.  return SetCo
0b20: 6d 70 72 65 73 73 69 6f 6e 28 70 77 73 7a 46 69  mpression(pwszFi
0b30: 6c 65 6e 61 6d 65 2c 20 43 4f 4d 50 52 45 53 53  lename, COMPRESS
0b40: 49 4f 4e 5f 46 4f 52 4d 41 54 5f 4e 4f 4e 45 29  ION_FORMAT_NONE)
0b50: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
0b60: 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20  dllexport) void 
0b70: 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 66  WINAPI sqlite3_f
0b80: 75 6e 63 74 69 6f 6e 5f 66 72 65 65 5f 63 61 6c  unction_free_cal
0b90: 6c 62 61 63 6b 63 6f 6f 6b 69 65 28 76 6f 69 64  lbackcookie(void
0ba0: 20 2a 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69   *pCookie).{.  i
0bb0: 66 20 28 70 43 6f 6f 6b 69 65 29 0a 20 20 20 20  f (pCookie).    
0bc0: 66 72 65 65 28 70 43 6f 6f 6b 69 65 29 3b 0a 7d  free(pCookie);.}
0bd0: 0a 0a 2f 2f 20 73 71 6c 69 74 65 33 20 77 72 61  ..// sqlite3 wra
0be0: 70 70 65 72 73 0a 5f 5f 64 65 63 6c 73 70 65 63  ppers.__declspec
0bf0: 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73  (dllexport) cons
0c00: 74 20 63 68 61 72 20 2a 20 57 49 4e 41 50 49 20  t char * WINAPI 
0c10: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
0c20: 6f 6e 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 2a  on_interop(int *
0c30: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
0c40: 63 68 61 72 20 2a 76 61 6c 20 3d 20 73 71 6c 69  char *val = sqli
0c50: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
0c60: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 76 61 6c  ;.  *plen = (val
0c70: 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28   != 0) ? strlen(
0c80: 76 61 6c 29 20 3a 20 30 3b 0a 0a 20 20 72 65 74  val) : 0;..  ret
0c90: 75 72 6e 20 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65  urn val;.}..__de
0ca0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
0cb0: 29 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c  ) int WINAPI sql
0cc0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
0cd0: 6e 75 6d 62 65 72 5f 69 6e 74 65 72 6f 70 28 76  number_interop(v
0ce0: 6f 69 64 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20  oid).{.  return 
0cf0: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
0d00: 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0a 7d 0a 0a  on_number();.}..
0d10: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
0d20: 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49  port) int WINAPI
0d30: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
0d40: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a  nterop(sqlite3 *
0d50: 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73  db).{.  return s
0d60: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 64 62 29  qlite3_close(db)
0d70: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
0d80: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57  dllexport) int W
0d90: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 65 78  INAPI sqlite3_ex
0da0: 65 63 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  ec_interop(sqlit
0db0: 65 33 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68  e3 *db, const ch
0dc0: 61 72 20 2a 73 71 6c 2c 20 73 71 6c 69 74 65 33  ar *sql, sqlite3
0dd0: 5f 63 61 6c 6c 62 61 63 6b 20 63 62 2c 20 76 6f  _callback cb, vo
0de0: 69 64 20 2a 70 76 2c 20 63 68 61 72 20 2a 2a 65  id *pv, char **e
0df0: 72 72 6d 73 67 2c 20 69 6e 74 20 2a 70 6c 65 6e  rrmsg, int *plen
0e00: 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20 73 71  ).{.  int n = sq
0e10: 6c 69 74 65 33 5f 65 78 65 63 28 64 62 2c 20 73  lite3_exec(db, s
0e20: 71 6c 2c 20 63 62 2c 20 70 76 2c 20 65 72 72 6d  ql, cb, pv, errm
0e30: 73 67 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  sg);.  *plen = (
0e40: 2a 65 72 72 6d 73 67 20 21 3d 20 30 29 20 3f 20  *errmsg != 0) ? 
0e50: 73 74 72 6c 65 6e 28 2a 65 72 72 6d 73 67 29 20  strlen(*errmsg) 
0e60: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b  : 0;.  return n;
0e70: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
0e80: 6c 6c 65 78 70 6f 72 74 29 20 73 71 6c 69 74 65  llexport) sqlite
0e90: 5f 69 6e 74 36 34 20 57 49 4e 41 50 49 20 73 71  _int64 WINAPI sq
0ea0: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
0eb0: 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
0ec0: 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20  sqlite3 *db).{. 
0ed0: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
0ee0: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
0ef0: 64 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  d(db);.}..__decl
0f00: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
0f10: 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74  int WINAPI sqlit
0f20: 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
0f30: 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a  op(sqlite3 *db).
0f40: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
0f50: 65 33 5f 63 68 61 6e 67 65 73 28 64 62 29 3b 0a  e3_changes(db);.
0f60: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
0f70: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e  lexport) int WIN
0f80: 41 50 49 20 73 71 6c 69 74 65 33 5f 74 6f 74 61  API sqlite3_tota
0f90: 6c 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f  l_changes_intero
0fa0: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29 0a 7b  p(sqlite3 *db).{
0fb0: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
0fc0: 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
0fd0: 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  db);.}..__declsp
0fe0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
0ff0: 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65  id WINAPI sqlite
1000: 33 5f 69 6e 74 65 72 72 75 70 74 5f 69 6e 74 65  3_interrupt_inte
1010: 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64 62 29  rop(sqlite3 *db)
1020: 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 74  .{.  sqlite3_int
1030: 65 72 72 75 70 74 28 64 62 29 3b 0a 7d 0a 0a 5f  errupt(db);.}.._
1040: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
1050: 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20  ort) int WINAPI 
1060: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
1070: 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20 63  _interop(const c
1080: 68 61 72 20 2a 73 71 6c 29 0a 7b 0a 20 20 72 65  har *sql).{.  re
1090: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6d  turn sqlite3_com
10a0: 70 6c 65 74 65 28 73 71 6c 29 3b 0a 7d 0a 0a 5f  plete(sql);.}.._
10b0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
10c0: 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20  ort) int WINAPI 
10d0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
10e0: 31 36 5f 69 6e 74 65 72 6f 70 28 63 6f 6e 73 74  16_interop(const
10f0: 20 76 6f 69 64 20 2a 73 71 6c 29 0a 7b 0a 20 20   void *sql).{.  
1100: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63  return sqlite3_c
1110: 6f 6d 70 6c 65 74 65 31 36 28 73 71 6c 29 3b 0a  omplete16(sql);.
1120: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
1130: 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e  lexport) int WIN
1140: 41 50 49 20 73 71 6c 69 74 65 33 5f 62 75 73 79  API sqlite3_busy
1150: 5f 68 61 6e 64 6c 65 72 5f 69 6e 74 65 72 6f 70  _handler_interop
1160: 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 69 6e  (sqlite3 *db, in
1170: 74 28 2a 63 62 29 28 76 6f 69 64 20 2a 2c 20 69  t(*cb)(void *, i
1180: 6e 74 29 2c 20 76 6f 69 64 20 2a 70 76 29 0a 7b  nt), void *pv).{
1190: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
11a0: 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 64  3_busy_handler(d
11b0: 62 2c 20 63 62 2c 20 70 76 29 3b 0a 7d 0a 0a 5f  b, cb, pv);.}.._
11c0: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
11d0: 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20  ort) int WINAPI 
11e0: 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
11f0: 65 6f 75 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  eout_interop(sql
1200: 69 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 6d 73  ite3 *db, int ms
1210: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
1220: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
1230: 74 28 64 62 2c 20 6d 73 29 3b 0a 7d 0a 0a 5f 5f  t(db, ms);.}..__
1240: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
1250: 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20 73  rt) int WINAPI s
1260: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
1270: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
1280: 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72   *db, const char
1290: 20 2a 73 71 6c 2c 20 63 68 61 72 20 2a 2a 2a 72   *sql, char ***r
12a0: 65 73 75 6c 74 70 2c 20 69 6e 74 20 2a 6e 72 6f  esultp, int *nro
12b0: 77 2c 20 69 6e 74 20 2a 6e 63 6f 6c 75 6d 6e 2c  w, int *ncolumn,
12c0: 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 2c 20   char **errmsg, 
12d0: 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69  int *plen).{.  i
12e0: 6e 74 20 6e 20 3d 20 73 71 6c 69 74 65 33 5f 67  nt n = sqlite3_g
12f0: 65 74 5f 74 61 62 6c 65 28 64 62 2c 20 73 71 6c  et_table(db, sql
1300: 2c 20 72 65 73 75 6c 74 70 2c 20 6e 72 6f 77 2c  , resultp, nrow,
1310: 20 6e 63 6f 6c 75 6d 6e 2c 20 65 72 72 6d 73 67   ncolumn, errmsg
1320: 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 2a 65  );.  *plen = (*e
1330: 72 72 6d 73 67 20 21 3d 20 30 29 20 3f 20 73 74  rrmsg != 0) ? st
1340: 72 6c 65 6e 28 28 63 68 61 72 20 2a 29 2a 65 72  rlen((char *)*er
1350: 72 6d 73 67 29 20 3a 20 30 3b 0a 20 20 72 65 74  rmsg) : 0;.  ret
1360: 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  urn n;.}..__decl
1370: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
1380: 76 6f 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69  void WINAPI sqli
1390: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 5f 69  te3_free_table_i
13a0: 6e 74 65 72 6f 70 28 63 68 61 72 20 2a 2a 72 65  nterop(char **re
13b0: 73 75 6c 74 29 0a 7b 0a 20 20 73 71 6c 69 74 65  sult).{.  sqlite
13c0: 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 72 65 73  3_free_table(res
13d0: 75 6c 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  ult);.}..__decls
13e0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76  pec(dllexport) v
13f0: 6f 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69 74  oid WINAPI sqlit
1400: 65 33 5f 66 72 65 65 5f 69 6e 74 65 72 6f 70 28  e3_free_interop(
1410: 63 68 61 72 20 2a 7a 29 0a 7b 0a 20 20 73 71 6c  char *z).{.  sql
1420: 69 74 65 33 5f 66 72 65 65 28 7a 29 3b 0a 7d 0a  ite3_free(z);.}.
1430: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
1440: 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50  xport) int WINAP
1450: 49 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69  I sqlite3_open_i
1460: 6e 74 65 72 6f 70 28 63 6f 6e 73 74 20 63 68 61  nterop(const cha
1470: 72 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 71 6c 69  r*filename, sqli
1480: 74 65 33 20 2a 2a 70 70 64 62 29 0a 7b 0a 20 20  te3 **ppdb).{.  
1490: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 6f  return sqlite3_o
14a0: 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 70 70  pen(filename, pp
14b0: 64 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  db);.}..__declsp
14c0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
14d0: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
14e0: 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
14f0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65  const void *file
1500: 6e 61 6d 65 2c 20 73 71 6c 69 74 65 33 20 2a 2a  name, sqlite3 **
1510: 70 70 64 62 29 0a 7b 0a 20 20 72 65 74 75 72 6e  ppdb).{.  return
1520: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
1530: 66 69 6c 65 6e 61 6d 65 2c 20 70 70 64 62 29 3b  filename, ppdb);
1540: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
1550: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49  llexport) int WI
1560: 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 65 72 72  NAPI sqlite3_err
1570: 63 6f 64 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c  code_interop(sql
1580: 69 74 65 33 20 2a 64 62 29 0a 7b 0a 20 20 72 65  ite3 *db).{.  re
1590: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 65 72 72  turn sqlite3_err
15a0: 63 6f 64 65 28 64 62 29 3b 0a 7d 0a 0a 5f 5f 64  code(db);.}..__d
15b0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
15c0: 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20  t) const char * 
15d0: 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 65  WINAPI sqlite3_e
15e0: 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 73 71  rrmsg_interop(sq
15f0: 6c 69 74 65 33 20 2a 64 62 2c 20 69 6e 74 20 2a  lite3 *db, int *
1600: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
1610: 63 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c  char *pval = sql
1620: 69 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29 3b  ite3_errmsg(db);
1630: 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c  .  *plen = (pval
1640: 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28   != 0) ? strlen(
1650: 70 76 61 6c 29 20 3a 20 30 3b 0a 20 20 72 65 74  pval) : 0;.  ret
1660: 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64  urn pval;.}..__d
1670: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
1680: 74 29 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 20  t) const void * 
1690: 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 65  WINAPI sqlite3_e
16a0: 72 72 6d 73 67 31 36 5f 69 6e 74 65 72 6f 70 28  rrmsg16_interop(
16b0: 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 69 6e 74  sqlite3 *db, int
16c0: 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73   *plen).{.  cons
16d0: 74 20 76 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73  t void *pval = s
16e0: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28  qlite3_errmsg16(
16f0: 64 62 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  db);.  *plen = (
1700: 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 77 63 73  pval != 0) ? wcs
1710: 6c 65 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 70  len((wchar_t *)p
1720: 76 61 6c 29 20 2a 20 73 69 7a 65 6f 66 28 77 63  val) * sizeof(wc
1730: 68 61 72 5f 74 29 3a 20 30 3b 0a 20 20 72 65 74  har_t): 0;.  ret
1740: 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64  urn pval;.}..__d
1750: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
1760: 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71  t) int WINAPI sq
1770: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
1780: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 64  terop(sqlite3 *d
1790: 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  b, const char *s
17a0: 71 6c 2c 20 69 6e 74 20 6e 62 79 74 65 73 2c 20  ql, int nbytes, 
17b0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
17c0: 70 73 74 6d 74 2c 20 63 6f 6e 73 74 20 63 68 61  pstmt, const cha
17d0: 72 20 2a 2a 70 7a 74 61 69 6c 2c 20 69 6e 74 20  r **pztail, int 
17e0: 2a 70 6c 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e  *plen).{.  int n
17f0: 20 3d 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61   = sqlite3_prepa
1800: 72 65 28 64 62 2c 20 73 71 6c 2c 20 6e 62 79 74  re(db, sql, nbyt
1810: 65 73 2c 20 70 70 73 74 6d 74 2c 20 70 7a 74 61  es, ppstmt, pzta
1820: 69 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  il);.  *plen = (
1830: 2a 70 7a 74 61 69 6c 20 21 3d 20 30 29 20 3f 20  *pztail != 0) ? 
1840: 73 74 72 6c 65 6e 28 2a 70 7a 74 61 69 6c 29 20  strlen(*pztail) 
1850: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 6e 3b  : 0;.  return n;
1860: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
1870: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49  llexport) int WI
1880: 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 70 72 65  NAPI sqlite3_pre
1890: 70 61 72 65 31 36 5f 69 6e 74 65 72 6f 70 28 73  pare16_interop(s
18a0: 71 6c 69 74 65 33 20 2a 64 62 2c 20 63 6f 6e 73  qlite3 *db, cons
18b0: 74 20 76 6f 69 64 20 2a 73 71 6c 2c 20 69 6e 74  t void *sql, int
18c0: 20 6e 63 68 61 72 73 2c 20 73 71 6c 69 74 65 33   nchars, sqlite3
18d0: 5f 73 74 6d 74 20 2a 2a 70 70 73 74 6d 74 2c 20  _stmt **ppstmt, 
18e0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 74  const void **pzt
18f0: 61 69 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a  ail, int *plen).
1900: 7b 0a 20 20 69 6e 74 20 6e 20 3d 20 73 71 6c 69  {.  int n = sqli
1910: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 64 62  te3_prepare16(db
1920: 2c 20 73 71 6c 2c 20 6e 63 68 61 72 73 20 2a 20  , sql, nchars * 
1930: 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 2c  sizeof(wchar_t),
1940: 20 70 70 73 74 6d 74 2c 20 70 7a 74 61 69 6c 29   ppstmt, pztail)
1950: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 2a 70 7a  ;.  *plen = (*pz
1960: 74 61 69 6c 20 21 3d 20 30 29 20 3f 20 77 63 73  tail != 0) ? wcs
1970: 6c 65 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 2a  len((wchar_t *)*
1980: 70 7a 74 61 69 6c 29 20 2a 20 73 69 7a 65 6f 66  pztail) * sizeof
1990: 28 77 63 68 61 72 5f 74 29 20 3a 20 30 3b 0a 20  (wchar_t) : 0;. 
19a0: 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f 5f   return n;.}..__
19b0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
19c0: 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20 73  rt) int WINAPI s
19d0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
19e0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
19f0: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
1a00: 20 69 43 6f 6c 2c 20 63 6f 6e 73 74 20 76 6f 69   iCol, const voi
1a10: 64 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f  d *pv, int n, vo
1a20: 69 64 28 2a 63 62 29 28 76 6f 69 64 2a 29 29 0a  id(*cb)(void*)).
1a30: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
1a40: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 73 74 6d  e3_bind_blob(stm
1a50: 74 2c 20 69 43 6f 6c 2c 20 70 76 2c 20 6e 2c 20  t, iCol, pv, n, 
1a60: 63 62 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  cb);.}..__declsp
1a70: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
1a80: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
1a90: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74  _bind_double_int
1aa0: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
1ab0: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
1ac0: 6c 2c 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29 0a  l, double *val).
1ad0: 7b 0a 09 72 65 74 75 72 6e 20 73 71 6c 69 74 65  {..return sqlite
1ae0: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 73 74  3_bind_double(st
1af0: 6d 74 2c 69 43 6f 6c 2c 2a 76 61 6c 29 3b 0a 7d  mt,iCol,*val);.}
1b00: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
1b10: 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41  export) int WINA
1b20: 50 49 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  PI sqlite3_bind_
1b30: 69 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  int_interop(sqli
1b40: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20  te3_stmt *stmt, 
1b50: 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 76 61  int iCol, int va
1b60: 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  l).{.  return sq
1b70: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 73  lite3_bind_int(s
1b80: 74 6d 74 2c 20 69 43 6f 6c 2c 20 76 61 6c 29 3b  tmt, iCol, val);
1b90: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
1ba0: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49  llexport) int WI
1bb0: 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 62 69 6e  NAPI sqlite3_bin
1bc0: 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  d_int64_interop(
1bd0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
1be0: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 73 71  mt, int iCol, sq
1bf0: 6c 69 74 65 5f 69 6e 74 36 34 20 2a 76 61 6c 29  lite_int64 *val)
1c00: 0a 7b 0a 09 72 65 74 75 72 6e 20 73 71 6c 69 74  .{..return sqlit
1c10: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 73 74  e3_bind_int64(st
1c20: 6d 74 2c 69 43 6f 6c 2c 2a 76 61 6c 29 3b 0a 7d  mt,iCol,*val);.}
1c30: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
1c40: 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41  export) int WINA
1c50: 50 49 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  PI sqlite3_bind_
1c60: 6e 75 6c 6c 5f 69 6e 74 65 72 6f 70 28 73 71 6c  null_interop(sql
1c70: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
1c80: 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72   int iCol).{.  r
1c90: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62 69  eturn sqlite3_bi
1ca0: 6e 64 5f 6e 75 6c 6c 28 73 74 6d 74 2c 20 69 43  nd_null(stmt, iC
1cb0: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
1cc0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
1cd0: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
1ce0: 5f 62 69 6e 64 5f 74 65 78 74 5f 69 6e 74 65 72  _bind_text_inter
1cf0: 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  op(sqlite3_stmt 
1d00: 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c  *stmt, int iCol,
1d10: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 61 6c   const char *val
1d20: 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 63  , int n, void(*c
1d30: 62 29 28 76 6f 69 64 20 2a 29 29 0a 7b 0a 20 20  b)(void *)).{.  
1d40: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62  return sqlite3_b
1d50: 69 6e 64 5f 74 65 78 74 28 73 74 6d 74 2c 20 69  ind_text(stmt, i
1d60: 43 6f 6c 2c 20 76 61 6c 2c 20 6e 2c 20 63 62 29  Col, val, n, cb)
1d70: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
1d80: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57  dllexport) int W
1d90: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 62 69  INAPI sqlite3_bi
1da0: 6e 64 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f  nd_text16_intero
1db0: 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  p(sqlite3_stmt *
1dc0: 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20  stmt, int iCol, 
1dd0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 76 61 6c 2c  const void *val,
1de0: 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 63 62   int n, void(*cb
1df0: 29 28 76 6f 69 64 20 2a 29 29 0a 7b 0a 20 20 72  )(void *)).{.  r
1e00: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 62 69  eturn sqlite3_bi
1e10: 6e 64 5f 74 65 78 74 31 36 28 73 74 6d 74 2c 20  nd_text16(stmt, 
1e20: 69 43 6f 6c 2c 20 76 61 6c 2c 20 6e 2c 20 63 62  iCol, val, n, cb
1e30: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
1e40: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
1e50: 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 62  WINAPI sqlite3_b
1e60: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
1e70: 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  unt_interop(sqli
1e80: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a  te3_stmt *stmt).
1e90: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
1ea0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
1eb0: 72 5f 63 6f 75 6e 74 28 73 74 6d 74 29 3b 0a 7d  r_count(stmt);.}
1ec0: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
1ed0: 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 63 68  export) const ch
1ee0: 61 72 20 2a 20 57 49 4e 41 50 49 20 73 71 6c 69  ar * WINAPI sqli
1ef0: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1f00: 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  er_name_interop(
1f10: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74  sqlite3_stmt *st
1f20: 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e  mt, int iCol, in
1f30: 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e  t *plen).{.  con
1f40: 73 74 20 63 68 61 72 20 2a 70 76 61 6c 20 3d 20  st char *pval = 
1f50: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
1f60: 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73 74 6d 74  ameter_name(stmt
1f70: 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e  , iCol);.  *plen
1f80: 20 3d 20 28 70 76 61 6c 20 21 3d 20 30 29 20 3f   = (pval != 0) ?
1f90: 20 73 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a 20   strlen(pval) : 
1fa0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
1fb0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
1fc0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57  dllexport) int W
1fd0: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 62 69  INAPI sqlite3_bi
1fe0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
1ff0: 65 78 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  ex_interop(sqlit
2000: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 63  e3_stmt *stmt, c
2010: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
2020: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
2030: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
2040: 74 65 72 5f 69 6e 64 65 78 28 73 74 6d 74 2c 20  ter_index(stmt, 
2050: 7a 4e 61 6d 65 29 3b 0a 7d 0a 0a 5f 5f 64 65 63  zName);.}..__dec
2060: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
2070: 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c 69   int WINAPI sqli
2080: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74  te3_column_count
2090: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
20a0: 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a 7b 0a 20  _stmt *stmt).{. 
20b0: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
20c0: 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 73 74 6d  column_count(stm
20d0: 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  t);.}..__declspe
20e0: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e  c(dllexport) con
20f0: 73 74 20 63 68 61 72 20 2a 20 57 49 4e 41 50 49  st char * WINAPI
2100: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
2110: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c  name_interop(sql
2120: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
2130: 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a   int iCol, int *
2140: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
2150: 63 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c  char *pval = sql
2160: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
2170: 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20  (stmt, iCol);.  
2180: 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d  *plen = (pval !=
2190: 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61   0) ? strlen(pva
21a0: 6c 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e  l) : 0;.  return
21b0: 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c   pval;.}..__decl
21c0: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
21d0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 20 57 49 4e  const void * WIN
21e0: 41 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  API sqlite3_colu
21f0: 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  mn_name16_intero
2200: 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  p(sqlite3_stmt *
2210: 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c 2c 20  stmt, int iCol, 
2220: 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63  int *plen).{.  c
2230: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c 20  onst void *pval 
2240: 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  = sqlite3_column
2250: 5f 6e 61 6d 65 31 36 28 73 74 6d 74 2c 20 69 43  _name16(stmt, iC
2260: 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28  ol);.  *plen = (
2270: 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 77 63 73  pval != 0) ? wcs
2280: 6c 65 6e 28 28 77 63 68 61 72 5f 74 20 2a 29 70  len((wchar_t *)p
2290: 76 61 6c 29 20 2a 20 73 69 7a 65 6f 66 28 77 63  val) * sizeof(wc
22a0: 68 61 72 5f 74 29 20 3a 20 30 3b 0a 20 20 72 65  har_t) : 0;.  re
22b0: 74 75 72 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f  turn pval;.}..__
22c0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
22d0: 72 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  rt) const char *
22e0: 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f   WINAPI sqlite3_
22f0: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f  column_decltype_
2300: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
2310: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
2320: 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29  iCol, int *plen)
2330: 0a 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  .{.  const char 
2340: 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f  *pval = sqlite3_
2350: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28  column_decltype(
2360: 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a  stmt, iCol);.  *
2370: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
2380: 30 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c  0) ? strlen(pval
2390: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
23a0: 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pval;.}..__decls
23b0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
23c0: 6f 6e 73 74 20 76 6f 69 64 20 2a 20 57 49 4e 41  onst void * WINA
23d0: 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  PI sqlite3_colum
23e0: 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74  n_decltype16_int
23f0: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
2400: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
2410: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
2420: 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76    const void *pv
2430: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
2440: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 73  umn_decltype16(s
2450: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70  tmt, iCol);.  *p
2460: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
2470: 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63 68 61  ) ? wcslen((wcha
2480: 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20 73 69  r_t *)pval) * si
2490: 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20 3a 20  zeof(wchar_t) : 
24a0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
24b0: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
24c0: 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57  dllexport) int W
24d0: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 73 74  INAPI sqlite3_st
24e0: 65 70 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  ep_interop(sqlit
24f0: 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a 7b  e3_stmt *stmt).{
2500: 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65  .  return sqlite
2510: 33 5f 73 74 65 70 28 73 74 6d 74 29 3b 0a 7d 0a  3_step(stmt);.}.
2520: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
2530: 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50  xport) int WINAP
2540: 49 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 63  I sqlite3_data_c
2550: 6f 75 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  ount_interop(sql
2560: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29  ite3_stmt *stmt)
2570: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
2580: 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74 28 73  te3_data_count(s
2590: 74 6d 74 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  tmt);.}..__decls
25a0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
25b0: 6f 6e 73 74 20 76 6f 69 64 20 2a 20 57 49 4e 41  onst void * WINA
25c0: 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  PI sqlite3_colum
25d0: 6e 5f 62 6c 6f 62 5f 69 6e 74 65 72 6f 70 28 73  n_blob_interop(s
25e0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d  qlite3_stmt *stm
25f0: 74 2c 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20  t, int iCol).{. 
2600: 20 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f   return sqlite3_
2610: 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 73 74 6d 74  column_blob(stmt
2620: 2c 20 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  , iCol);.}..__de
2630: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
2640: 29 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c  ) int WINAPI sql
2650: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
2660: 73 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  s_interop(sqlite
2670: 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e  3_stmt *stmt, in
2680: 74 20 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75  t iCol).{.  retu
2690: 72 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  rn sqlite3_colum
26a0: 6e 5f 62 79 74 65 73 28 73 74 6d 74 2c 20 69 43  n_bytes(stmt, iC
26b0: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
26c0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
26d0: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
26e0: 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 5f  _column_bytes16_
26f0: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
2700: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
2710: 69 43 6f 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e  iCol).{.  return
2720: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
2730: 62 79 74 65 73 31 36 28 73 74 6d 74 2c 20 69 43  bytes16(stmt, iC
2740: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
2750: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
2760: 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65  id WINAPI sqlite
2770: 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
2780: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
2790: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
27a0: 69 43 6f 6c 2c 20 64 6f 75 62 6c 65 20 2a 76 61  iCol, double *va
27b0: 6c 29 0a 7b 0a 09 2a 76 61 6c 20 3d 20 73 71 6c  l).{..*val = sql
27c0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
27d0: 6c 65 28 73 74 6d 74 2c 69 43 6f 6c 29 3b 0a 7d  le(stmt,iCol);.}
27e0: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
27f0: 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41  export) int WINA
2800: 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  PI sqlite3_colum
2810: 6e 5f 69 6e 74 5f 69 6e 74 65 72 6f 70 28 73 71  n_int_interop(sq
2820: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74  lite3_stmt *stmt
2830: 2c 20 69 6e 74 20 69 43 6f 6c 29 0a 7b 0a 20 20  , int iCol).{.  
2840: 72 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 63  return sqlite3_c
2850: 6f 6c 75 6d 6e 5f 69 6e 74 28 73 74 6d 74 2c 20  olumn_int(stmt, 
2860: 69 43 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c  iCol);.}..__decl
2870: 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20  spec(dllexport) 
2880: 76 6f 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69  void WINAPI sqli
2890: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
28a0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
28b0: 5f 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74  _stmt *stmt, int
28c0: 20 69 43 6f 6c 2c 20 73 71 6c 69 74 65 5f 69 6e   iCol, sqlite_in
28d0: 74 36 34 20 2a 76 61 6c 29 0a 7b 0a 09 2a 76 61  t64 *val).{..*va
28e0: 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  l = sqlite3_colu
28f0: 6d 6e 5f 69 6e 74 36 34 28 73 74 6d 74 2c 69 43  mn_int64(stmt,iC
2900: 6f 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  ol);.}..__declsp
2910: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
2920: 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61  nst unsigned cha
2930: 72 20 2a 20 57 49 4e 41 50 49 20 73 71 6c 69 74  r * WINAPI sqlit
2940: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69  e3_column_text_i
2950: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73  nterop(sqlite3_s
2960: 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69  tmt *stmt, int i
2970: 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a  Col, int *plen).
2980: 7b 0a 20 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e  {.  const unsign
2990: 65 64 20 63 68 61 72 20 2a 70 76 61 6c 20 3d 20  ed char *pval = 
29a0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
29b0: 65 78 74 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b  ext(stmt, iCol);
29c0: 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c  .  *plen = (pval
29d0: 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28   != 0) ? strlen(
29e0: 28 63 68 61 72 20 2a 29 70 76 61 6c 29 20 3a 20  (char *)pval) : 
29f0: 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c  0;.  return pval
2a00: 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28  ;.}..__declspec(
2a10: 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74  dllexport) const
2a20: 20 76 6f 69 64 20 2a 20 57 49 4e 41 50 49 20 73   void * WINAPI s
2a30: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
2a40: 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c  xt16_interop(sql
2a50: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
2a60: 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a   int iCol, int *
2a70: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
2a80: 76 6f 69 64 20 2a 70 76 61 6c 20 3d 20 73 71 6c  void *pval = sql
2a90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
2aa0: 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a  16(stmt, iCol);.
2ab0: 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20    *plen = (pval 
2ac0: 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28  != 0) ? wcslen((
2ad0: 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20  wchar_t *)pval) 
2ae0: 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74  * sizeof(wchar_t
2af0: 29 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70  ): 0;.  return p
2b00: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
2b10: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
2b20: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
2b30: 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 5f 69 6e 74  _column_type_int
2b40: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
2b50: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
2b60: 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  l).{.  return sq
2b70: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70  lite3_column_typ
2b80: 65 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 7d  e(stmt, iCol);.}
2b90: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
2ba0: 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41  export) int WINA
2bb0: 50 49 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  PI sqlite3_final
2bc0: 69 7a 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  ize_interop(sqli
2bd0: 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29 0a  te3_stmt *stmt).
2be0: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
2bf0: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 73 74 6d 74  e3_finalize(stmt
2c00: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
2c10: 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20  (dllexport) int 
2c20: 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 72  WINAPI sqlite3_r
2c30: 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c  eset_interop(sql
2c40: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 29  ite3_stmt *stmt)
2c50: 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69  .{.  return sqli
2c60: 74 65 33 5f 72 65 73 65 74 28 73 74 6d 74 29 3b  te3_reset(stmt);
2c70: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
2c80: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49  llexport) int WI
2c90: 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 63 72 65  NAPI sqlite3_cre
2ca0: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74  ate_function_int
2cb0: 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 70 73  erop(sqlite3 *ps
2cc0: 71 6c 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  ql, const char *
2cd0: 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 69  zFunctionName, i
2ce0: 6e 74 20 6e 41 72 67 2c 20 69 6e 74 20 65 54 65  nt nArg, int eTe
2cf0: 78 74 52 65 70 2c 20 53 51 4c 49 54 45 55 53 45  xtRep, SQLITEUSE
2d00: 52 46 55 4e 43 20 66 75 6e 63 2c 20 53 51 4c 49  RFUNC func, SQLI
2d10: 54 45 55 53 45 52 46 55 4e 43 20 66 75 6e 63 73  TEUSERFUNC funcs
2d20: 74 65 70 2c 20 53 51 4c 49 54 45 55 53 45 52 46  tep, SQLITEUSERF
2d30: 55 4e 43 20 66 75 6e 63 66 69 6e 61 6c 2c 20 76  UNC funcfinal, v
2d40: 6f 69 64 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a  oid **ppCookie).
2d50: 7b 0a 20 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c  {.  int n;.  SQL
2d60: 49 54 45 55 53 45 52 46 55 4e 43 20 2a 70 20 3d  ITEUSERFUNC *p =
2d70: 20 28 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43   (SQLITEUSERFUNC
2d80: 20 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66   *)malloc(sizeof
2d90: 28 53 51 4c 49 54 45 55 53 45 52 46 55 4e 43 29  (SQLITEUSERFUNC)
2da0: 20 2a 20 33 29 3b 0a 0a 20 20 70 5b 30 5d 20 3d   * 3);..  p[0] =
2db0: 20 66 75 6e 63 3b 0a 20 20 70 5b 31 5d 20 3d 20   func;.  p[1] = 
2dc0: 66 75 6e 63 73 74 65 70 3b 0a 20 20 70 5b 32 5d  funcstep;.  p[2]
2dd0: 20 3d 20 66 75 6e 63 66 69 6e 61 6c 3b 0a 0a 20   = funcfinal;.. 
2de0: 20 2a 70 70 43 6f 6f 6b 69 65 20 3d 20 30 3b 0a   *ppCookie = 0;.
2df0: 0a 20 20 6e 20 3d 20 73 71 6c 69 74 65 33 5f 63  .  n = sqlite3_c
2e00: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 70  reate_function(p
2e10: 73 71 6c 2c 20 7a 46 75 6e 63 74 69 6f 6e 4e 61  sql, zFunctionNa
2e20: 6d 65 2c 20 6e 41 72 67 2c 20 65 54 65 78 74 52  me, nArg, eTextR
2e30: 65 70 2c 20 70 2c 20 28 66 75 6e 63 20 21 3d 20  ep, p, (func != 
2e40: 30 29 20 3f 20 73 71 6c 69 74 65 33 5f 69 6e 74  0) ? sqlite3_int
2e50: 65 72 6f 70 5f 66 75 6e 63 20 3a 20 30 2c 20 28  erop_func : 0, (
2e60: 66 75 6e 63 73 74 65 70 20 21 3d 20 30 29 20 3f  funcstep != 0) ?
2e70: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70   sqlite3_interop
2e80: 5f 73 74 65 70 20 3a 20 30 2c 20 28 66 75 6e 63  _step : 0, (func
2e90: 66 69 6e 61 6c 20 21 3d 20 30 29 20 3f 20 73 71  final != 0) ? sq
2ea0: 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66 69  lite3_interop_fi
2eb0: 6e 61 6c 20 3a 20 30 29 3b 0a 20 20 69 66 20 28  nal : 0);.  if (
2ec0: 6e 20 21 3d 20 30 29 0a 20 20 20 20 66 72 65 65  n != 0).    free
2ed0: 28 70 29 3b 0a 20 20 65 6c 73 65 0a 20 20 20 20  (p);.  else.    
2ee0: 2a 70 70 43 6f 6f 6b 69 65 20 3d 20 70 3b 0a 0a  *ppCookie = p;..
2ef0: 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 5f    return n;.}.._
2f00: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
2f10: 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49 20  ort) int WINAPI 
2f20: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
2f30: 75 6e 63 74 69 6f 6e 31 36 5f 69 6e 74 65 72 6f  unction16_intero
2f40: 70 28 73 71 6c 69 74 65 33 20 2a 70 73 71 6c 2c  p(sqlite3 *psql,
2f50: 20 76 6f 69 64 20 2a 7a 46 75 6e 63 74 69 6f 6e   void *zFunction
2f60: 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 2c 20  Name, int nArg, 
2f70: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20 53 51  int eTextRep, SQ
2f80: 4c 49 54 45 55 53 45 52 46 55 4e 43 20 66 75 6e  LITEUSERFUNC fun
2f90: 63 2c 20 53 51 4c 49 54 45 55 53 45 52 46 55 4e  c, SQLITEUSERFUN
2fa0: 43 20 66 75 6e 63 73 74 65 70 2c 20 53 51 4c 49  C funcstep, SQLI
2fb0: 54 45 55 53 45 52 46 55 4e 43 20 66 75 6e 63 66  TEUSERFUNC funcf
2fc0: 69 6e 61 6c 2c 20 76 6f 69 64 20 2a 2a 70 70 43  inal, void **ppC
2fd0: 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69 6e 74 20 6e  ookie).{.  int n
2fe0: 3b 0a 20 20 53 51 4c 49 54 45 55 53 45 52 46 55  ;.  SQLITEUSERFU
2ff0: 4e 43 20 2a 70 20 3d 20 28 53 51 4c 49 54 45 55  NC *p = (SQLITEU
3000: 53 45 52 46 55 4e 43 20 2a 29 6d 61 6c 6c 6f 63  SERFUNC *)malloc
3010: 28 73 69 7a 65 6f 66 28 53 51 4c 49 54 45 55 53  (sizeof(SQLITEUS
3020: 45 52 46 55 4e 43 29 20 2a 20 33 29 3b 0a 0a 20  ERFUNC) * 3);.. 
3030: 20 70 5b 30 5d 20 3d 20 66 75 6e 63 3b 0a 20 20   p[0] = func;.  
3040: 70 5b 31 5d 20 3d 20 66 75 6e 63 73 74 65 70 3b  p[1] = funcstep;
3050: 0a 20 20 70 5b 32 5d 20 3d 20 66 75 6e 63 66 69  .  p[2] = funcfi
3060: 6e 61 6c 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69  nal;..  *ppCooki
3070: 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71  e = 0;..  n = sq
3080: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
3090: 63 74 69 6f 6e 31 36 28 70 73 71 6c 2c 20 7a 46  ction16(psql, zF
30a0: 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e 41 72  unctionName, nAr
30b0: 67 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20  g, eTextRep, p, 
30c0: 28 66 75 6e 63 20 21 3d 20 30 29 20 3f 20 73 71  (func != 0) ? sq
30d0: 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 66 75  lite3_interop_fu
30e0: 6e 63 20 3a 20 30 2c 20 28 66 75 6e 63 73 74 65  nc : 0, (funcste
30f0: 70 20 21 3d 20 30 29 20 3f 20 73 71 6c 69 74 65  p != 0) ? sqlite
3100: 33 5f 69 6e 74 65 72 6f 70 5f 73 74 65 70 20 3a  3_interop_step :
3110: 20 30 2c 20 28 66 75 6e 63 66 69 6e 61 6c 20 21   0, (funcfinal !
3120: 3d 20 30 29 20 3f 20 73 71 6c 69 74 65 33 5f 69  = 0) ? sqlite3_i
3130: 6e 74 65 72 6f 70 5f 66 69 6e 61 6c 20 3a 20 30  nterop_final : 0
3140: 29 3b 0a 20 20 69 66 20 28 6e 20 21 3d 20 30 29  );.  if (n != 0)
3150: 0a 20 20 20 20 66 72 65 65 28 70 29 3b 0a 20 20  .    free(p);.  
3160: 65 6c 73 65 0a 20 20 20 20 2a 70 70 43 6f 6f 6b  else.    *ppCook
3170: 69 65 20 3d 20 70 3b 0a 0a 20 20 72 65 74 75 72  ie = p;..  retur
3180: 6e 20 6e 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  n n;.}..__declsp
3190: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
31a0: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
31b0: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
31c0: 6e 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  n_interop(sqlite
31d0: 33 2a 20 64 62 2c 20 63 6f 6e 73 74 20 63 68 61  3* db, const cha
31e0: 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 65 54  r *zName, int eT
31f0: 65 78 74 52 65 70 2c 20 76 6f 69 64 2a 20 70 76  extRep, void* pv
3200: 55 73 65 72 2c 20 53 51 4c 49 54 45 43 4f 4c 4c  User, SQLITECOLL
3210: 41 54 49 4f 4e 20 66 75 6e 63 2c 20 76 6f 69 64  ATION func, void
3220: 20 2a 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20   **ppCookie).{. 
3230: 20 69 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54 45   int n;.  SQLITE
3240: 43 4f 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20 28  COLLATION *p = (
3250: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20  SQLITECOLLATION 
3260: 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28  *)malloc(sizeof(
3270: 53 51 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 29  SQLITECOLLATION)
3280: 29 3b 0a 20 20 0a 20 20 70 5b 30 5d 20 3d 20 66  );.  .  p[0] = f
3290: 75 6e 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69  unc;..  *ppCooki
32a0: 65 20 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71  e = 0;..  n = sq
32b0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
32c0: 6c 61 74 69 6f 6e 28 64 62 2c 20 7a 4e 61 6d 65  lation(db, zName
32d0: 2c 20 65 54 65 78 74 52 65 70 2c 20 70 2c 20 73  , eTextRep, p, s
32e0: 71 6c 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 63  qlite3_interop_c
32f0: 6f 6c 6c 61 74 69 6f 6e 66 75 6e 63 29 3b 0a 20  ollationfunc);. 
3300: 20 69 66 20 28 6e 20 21 3d 20 30 29 0a 20 20 20   if (n != 0).   
3310: 20 66 72 65 65 28 70 29 3b 0a 20 20 65 6c 73 65   free(p);.  else
3320: 0a 20 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20 3d  .    *ppCookie =
3330: 20 70 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e 3b   p;..  return n;
3340: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3350: 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49  llexport) int WI
3360: 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 63 72 65  NAPI sqlite3_cre
3370: 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 5f  ate_collation16_
3380: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 2a  interop(sqlite3*
3390: 20 64 62 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20   db, const void 
33a0: 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 65 54 65 78  *zName, int eTex
33b0: 74 52 65 70 2c 20 76 6f 69 64 2a 20 70 76 55 73  tRep, void* pvUs
33c0: 65 72 2c 20 53 51 4c 49 54 45 43 4f 4c 4c 41 54  er, SQLITECOLLAT
33d0: 49 4f 4e 20 66 75 6e 63 2c 20 76 6f 69 64 20 2a  ION func, void *
33e0: 2a 70 70 43 6f 6f 6b 69 65 29 0a 7b 0a 20 20 69  *ppCookie).{.  i
33f0: 6e 74 20 6e 3b 0a 20 20 53 51 4c 49 54 45 43 4f  nt n;.  SQLITECO
3400: 4c 4c 41 54 49 4f 4e 20 2a 70 20 3d 20 28 53 51  LLATION *p = (SQ
3410: 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 20 2a 29  LITECOLLATION *)
3420: 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 53 51  malloc(sizeof(SQ
3430: 4c 49 54 45 43 4f 4c 4c 41 54 49 4f 4e 29 29 3b  LITECOLLATION));
3440: 0a 20 20 0a 20 20 70 5b 30 5d 20 3d 20 66 75 6e  .  .  p[0] = fun
3450: 63 3b 0a 0a 20 20 2a 70 70 43 6f 6f 6b 69 65 20  c;..  *ppCookie 
3460: 3d 20 30 3b 0a 0a 20 20 6e 20 3d 20 73 71 6c 69  = 0;..  n = sqli
3470: 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61  te3_create_colla
3480: 74 69 6f 6e 31 36 28 64 62 2c 20 28 63 6f 6e 73  tion16(db, (cons
3490: 74 20 63 68 61 72 20 2a 29 7a 4e 61 6d 65 2c 20  t char *)zName, 
34a0: 65 54 65 78 74 52 65 70 2c 20 70 2c 20 73 71 6c  eTextRep, p, sql
34b0: 69 74 65 33 5f 69 6e 74 65 72 6f 70 5f 63 6f 6c  ite3_interop_col
34c0: 6c 61 74 69 6f 6e 66 75 6e 63 29 3b 0a 20 20 69  lationfunc);.  i
34d0: 66 20 28 6e 20 21 3d 20 30 29 0a 20 20 20 20 66  f (n != 0).    f
34e0: 72 65 65 28 70 29 3b 0a 20 20 65 6c 73 65 0a 20  ree(p);.  else. 
34f0: 20 20 20 2a 70 70 43 6f 6f 6b 69 65 20 3d 20 70     *ppCookie = p
3500: 3b 0a 0a 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d  ;..  return n;.}
3510: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
3520: 65 78 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41  export) int WINA
3530: 50 49 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  PI sqlite3_aggre
3540: 67 61 74 65 5f 63 6f 75 6e 74 5f 69 6e 74 65 72  gate_count_inter
3550: 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  op(sqlite3_conte
3560: 78 74 20 2a 70 63 74 78 29 0a 7b 0a 20 20 72 65  xt *pctx).{.  re
3570: 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 61 67 67  turn sqlite3_agg
3580: 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 70 63 74  regate_count(pct
3590: 78 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  x);.}..__declspe
35a0: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e  c(dllexport) con
35b0: 73 74 20 76 6f 69 64 20 2a 20 57 49 4e 41 50 49  st void * WINAPI
35c0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
35d0: 6c 6f 62 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  lob_interop(sqli
35e0: 74 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c 29 0a  te3_value *val).
35f0: 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74  {.  return sqlit
3600: 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 76 61  e3_value_blob(va
3610: 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  l);.}..__declspe
3620: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
3630: 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f   WINAPI sqlite3_
3640: 76 61 6c 75 65 5f 62 79 74 65 73 5f 69 6e 74 65  value_bytes_inte
3650: 72 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  rop(sqlite3_valu
3660: 65 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75  e *val).{.  retu
3670: 72 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  rn sqlite3_value
3680: 5f 62 79 74 65 73 28 76 61 6c 29 3b 0a 7d 0a 0a  _bytes(val);.}..
3690: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
36a0: 70 6f 72 74 29 20 69 6e 74 20 57 49 4e 41 50 49  port) int WINAPI
36b0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
36c0: 79 74 65 73 31 36 5f 69 6e 74 65 72 6f 70 28 73  ytes16_interop(s
36d0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 76 61  qlite3_value *va
36e0: 6c 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71  l).{.  return sq
36f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
3700: 73 31 36 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64  s16(val);.}..__d
3710: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
3720: 74 29 20 76 6f 69 64 20 57 49 4e 41 50 49 20 73  t) void WINAPI s
3730: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
3740: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69  ble_interop(sqli
3750: 74 65 33 5f 76 61 6c 75 65 20 2a 70 76 61 6c 2c  te3_value *pval,
3760: 20 64 6f 75 62 6c 65 20 2a 76 61 6c 29 0a 7b 0a   double *val).{.
3770: 20 20 2a 76 61 6c 20 3d 20 73 71 6c 69 74 65 33    *val = sqlite3
3780: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 70 76  _value_double(pv
3790: 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  al);.}..__declsp
37a0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e  ec(dllexport) in
37b0: 74 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33  t WINAPI sqlite3
37c0: 5f 76 61 6c 75 65 5f 69 6e 74 5f 69 6e 74 65 72  _value_int_inter
37d0: 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  op(sqlite3_value
37e0: 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72   *val).{.  retur
37f0: 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  n sqlite3_value_
3800: 69 6e 74 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64  int(val);.}..__d
3810: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
3820: 74 29 20 76 6f 69 64 20 57 49 4e 41 50 49 20 73  t) void WINAPI s
3830: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
3840: 36 34 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74  64_interop(sqlit
3850: 65 33 5f 76 61 6c 75 65 20 2a 70 76 61 6c 2c 20  e3_value *pval, 
3860: 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 2a 76 61  sqlite_int64 *va
3870: 6c 29 0a 7b 0a 20 20 2a 76 61 6c 20 3d 20 73 71  l).{.  *val = sq
3880: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
3890: 34 28 70 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  4(pval);.}..__de
38a0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
38b0: 29 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64  ) const unsigned
38c0: 20 63 68 61 72 20 2a 20 57 49 4e 41 50 49 20 73   char * WINAPI s
38d0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
38e0: 74 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65  t_interop(sqlite
38f0: 33 5f 76 61 6c 75 65 20 2a 76 61 6c 2c 20 69 6e  3_value *val, in
3900: 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e  t *plen).{.  con
3910: 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72  st unsigned char
3920: 20 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33   *pval = sqlite3
3930: 5f 76 61 6c 75 65 5f 74 65 78 74 28 76 61 6c 29  _value_text(val)
3940: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61  ;.  *plen = (pva
3950: 6c 20 21 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e  l != 0) ? strlen
3960: 28 28 63 68 61 72 20 2a 29 70 76 61 6c 29 20 3a  ((char *)pval) :
3970: 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76 61   0;.  return pva
3980: 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  l;.}..__declspec
3990: 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73  (dllexport) cons
39a0: 74 20 76 6f 69 64 20 2a 20 57 49 4e 41 50 49 20  t void * WINAPI 
39b0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
39c0: 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 73 71 6c  xt16_interop(sql
39d0: 69 74 65 33 5f 76 61 6c 75 65 20 2a 76 61 6c 2c  ite3_value *val,
39e0: 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20 20   int *plen).{.  
39f0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 61 6c  const void *pval
3a00: 20 3d 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65   = sqlite3_value
3a10: 5f 74 65 78 74 31 36 28 76 61 6c 29 3b 0a 20 20  _text16(val);.  
3a20: 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d  *plen = (pval !=
3a30: 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77 63   0) ? wcslen((wc
3a40: 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a 20  har_t *)pval) * 
3a50: 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29 20  sizeof(wchar_t) 
3a60: 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70 76  : 0;.  return pv
3a70: 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65  al;.}..__declspe
3a80: 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 69 6e 74  c(dllexport) int
3a90: 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f   WINAPI sqlite3_
3aa0: 76 61 6c 75 65 5f 74 79 70 65 5f 69 6e 74 65 72  value_type_inter
3ab0: 6f 70 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  op(sqlite3_value
3ac0: 20 2a 76 61 6c 29 0a 7b 0a 20 20 72 65 74 75 72   *val).{.  retur
3ad0: 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  n sqlite3_value_
3ae0: 74 79 70 65 28 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f  type(val);.}..__
3af0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
3b00: 72 74 29 20 76 6f 69 64 20 2a 20 57 49 4e 41 50  rt) void * WINAP
3b10: 49 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  I sqlite3_aggreg
3b20: 61 74 65 5f 63 6f 6e 74 65 78 74 5f 69 6e 74 65  ate_context_inte
3b30: 72 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  rop(sqlite3_cont
3b40: 65 78 74 20 2a 70 63 74 78 2c 20 69 6e 74 20 6e  ext *pctx, int n
3b50: 29 0a 7b 0a 20 20 72 65 74 75 72 6e 20 73 71 6c  ).{.  return sql
3b60: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
3b70: 6f 6e 74 65 78 74 28 70 63 74 78 2c 20 6e 29 3b  ontext(pctx, n);
3b80: 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64  .}..__declspec(d
3b90: 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64 20 57  llexport) void W
3ba0: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 72 65  INAPI sqlite3_re
3bb0: 73 75 6c 74 5f 62 6c 6f 62 5f 69 6e 74 65 72 6f  sult_blob_intero
3bc0: 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  p(sqlite3_contex
3bd0: 74 20 2a 63 74 78 2c 20 63 6f 6e 73 74 20 76 6f  t *ctx, const vo
3be0: 69 64 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76  id *pv, int n, v
3bf0: 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29  oid(*cb)(void *)
3c00: 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65  ).{.  sqlite3_re
3c10: 73 75 6c 74 5f 62 6c 6f 62 28 63 74 78 2c 20 70  sult_blob(ctx, p
3c20: 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f  v, n, cb);.}..__
3c30: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
3c40: 72 74 29 20 76 6f 69 64 20 57 49 4e 41 50 49 20  rt) void WINAPI 
3c50: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
3c60: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 73 71  ouble_interop(sq
3c70: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70  lite3_context *p
3c80: 63 74 78 2c 20 64 6f 75 62 6c 65 20 2a 76 61 6c  ctx, double *val
3c90: 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65  ).{.  sqlite3_re
3ca0: 73 75 6c 74 5f 64 6f 75 62 6c 65 28 70 63 74 78  sult_double(pctx
3cb0: 2c 20 2a 76 61 6c 29 3b 0a 7d 0a 0a 5f 5f 64 65  , *val);.}..__de
3cc0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
3cd0: 29 20 76 6f 69 64 20 57 49 4e 41 50 49 20 73 71  ) void WINAPI sq
3ce0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
3cf0: 5f 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33  _interop(sqlite3
3d00: 5f 63 6f 6e 74 65 78 74 20 2a 70 63 74 78 2c 20  _context *pctx, 
3d10: 69 6e 74 20 76 61 6c 29 0a 7b 0a 20 20 73 71 6c  int val).{.  sql
3d20: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
3d30: 70 63 74 78 2c 20 76 61 6c 29 3b 0a 7d 0a 0a 5f  pctx, val);.}.._
3d40: 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70  _declspec(dllexp
3d50: 6f 72 74 29 20 76 6f 69 64 20 57 49 4e 41 50 49  ort) void WINAPI
3d60: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
3d70: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 73 71  int64_interop(sq
3d80: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 70  lite3_context *p
3d90: 63 74 78 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36  ctx, sqlite_int6
3da0: 34 20 2a 76 61 6c 29 0a 7b 0a 20 20 73 71 6c 69  4 *val).{.  sqli
3db0: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
3dc0: 28 70 63 74 78 2c 20 2a 76 61 6c 29 3b 0a 7d 0a  (pctx, *val);.}.
3dd0: 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65  .__declspec(dlle
3de0: 78 70 6f 72 74 29 20 76 6f 69 64 20 57 49 4e 41  xport) void WINA
3df0: 50 49 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  PI sqlite3_resul
3e00: 74 5f 6e 75 6c 6c 5f 69 6e 74 65 72 6f 70 28 73  t_null_interop(s
3e10: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a  qlite3_context *
3e20: 70 63 74 78 29 0a 7b 0a 20 20 73 71 6c 69 74 65  pctx).{.  sqlite
3e30: 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 70 63  3_result_null(pc
3e40: 74 78 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  tx);.}..__declsp
3e50: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f  ec(dllexport) vo
3e60: 69 64 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65  id WINAPI sqlite
3e70: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 69  3_result_error_i
3e80: 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 63  nterop(sqlite3_c
3e90: 6f 6e 74 65 78 74 20 2a 63 74 78 2c 20 63 6f 6e  ontext *ctx, con
3ea0: 73 74 20 63 68 61 72 20 2a 70 76 2c 20 69 6e 74  st char *pv, int
3eb0: 20 6e 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f   n).{.  sqlite3_
3ec0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 63 74 78  result_error(ctx
3ed0: 2c 20 70 76 2c 20 6e 29 3b 0a 7d 0a 0a 5f 5f 64  , pv, n);.}..__d
3ee0: 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72  eclspec(dllexpor
3ef0: 74 29 20 76 6f 69 64 20 57 49 4e 41 50 49 20 73  t) void WINAPI s
3f00: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
3f10: 72 6f 72 31 36 5f 69 6e 74 65 72 6f 70 28 73 71  ror16_interop(sq
3f20: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63  lite3_context *c
3f30: 74 78 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  tx, const void *
3f40: 70 76 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 73  pv, int n).{.  s
3f50: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
3f60: 72 6f 72 31 36 28 63 74 78 2c 20 70 76 2c 20 6e  ror16(ctx, pv, n
3f70: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
3f80: 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64  (dllexport) void
3f90: 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f   WINAPI sqlite3_
3fa0: 72 65 73 75 6c 74 5f 74 65 78 74 5f 69 6e 74 65  result_text_inte
3fb0: 72 6f 70 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  rop(sqlite3_cont
3fc0: 65 78 74 20 2a 63 74 78 2c 20 63 6f 6e 73 74 20  ext *ctx, const 
3fd0: 63 68 61 72 20 2a 70 76 2c 20 69 6e 74 20 6e 2c  char *pv, int n,
3fe0: 20 76 6f 69 64 28 2a 63 62 29 28 76 6f 69 64 20   void(*cb)(void 
3ff0: 2a 29 29 0a 7b 0a 20 20 73 71 6c 69 74 65 33 5f  *)).{.  sqlite3_
4000: 72 65 73 75 6c 74 5f 74 65 78 74 28 63 74 78 2c  result_text(ctx,
4010: 20 70 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a   pv, n, cb);.}..
4020: 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78  __declspec(dllex
4030: 70 6f 72 74 29 20 76 6f 69 64 20 57 49 4e 41 50  port) void WINAP
4040: 49 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  I sqlite3_result
4050: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
4060: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
4070: 2a 63 74 78 2c 20 63 6f 6e 73 74 20 76 6f 69 64  *ctx, const void
4080: 20 2a 70 76 2c 20 69 6e 74 20 6e 2c 20 76 6f 69   *pv, int n, voi
4090: 64 28 2a 63 62 29 28 76 6f 69 64 20 2a 29 29 0a  d(*cb)(void *)).
40a0: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75  {.  sqlite3_resu
40b0: 6c 74 5f 74 65 78 74 31 36 28 63 74 78 2c 20 70  lt_text16(ctx, p
40c0: 76 2c 20 6e 2c 20 63 62 29 3b 0a 7d 0a 0a 5f 5f  v, n, cb);.}..__
40d0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
40e0: 72 74 29 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  rt) const char *
40f0: 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f   WINAPI sqlite3_
4100: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
4110: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 73 71 6c  name_interop(sql
4120: 69 74 65 33 5f 73 74 6d 74 20 2a 73 74 6d 74 2c  ite3_stmt *stmt,
4130: 20 69 6e 74 20 69 43 6f 6c 2c 20 69 6e 74 20 2a   int iCol, int *
4140: 70 6c 65 6e 29 0a 7b 0a 20 20 63 6f 6e 73 74 20  plen).{.  const 
4150: 63 68 61 72 20 2a 70 76 61 6c 20 3d 20 73 71 6c  char *pval = sql
4160: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
4170: 62 61 73 65 5f 6e 61 6d 65 28 73 74 6d 74 2c 20  base_name(stmt, 
4180: 69 43 6f 6c 29 3b 0a 20 20 2a 70 6c 65 6e 20 3d  iCol);.  *plen =
4190: 20 28 70 76 61 6c 20 21 3d 20 30 29 20 3f 20 73   (pval != 0) ? s
41a0: 74 72 6c 65 6e 28 70 76 61 6c 29 20 3a 20 30 3b  trlen(pval) : 0;
41b0: 0a 20 20 72 65 74 75 72 6e 20 70 76 61 6c 3b 0a  .  return pval;.
41c0: 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c  }..__declspec(dl
41d0: 6c 65 78 70 6f 72 74 29 20 63 6f 6e 73 74 20 76  lexport) const v
41e0: 6f 69 64 20 2a 20 57 49 4e 41 50 49 20 73 71 6c  oid * WINAPI sql
41f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
4200: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
4210: 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  rop(sqlite3_stmt
4220: 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f 6c   *stmt, int iCol
4230: 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a 20  , int *plen).{. 
4240: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 76 61   const void *pva
4250: 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  l = sqlite3_colu
4260: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
4270: 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a  16(stmt, iCol);.
4280: 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20    *plen = (pval 
4290: 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28  != 0) ? wcslen((
42a0: 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20  wchar_t *)pval) 
42b0: 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74  * sizeof(wchar_t
42c0: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
42d0: 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pval;.}..__decls
42e0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
42f0: 6f 6e 73 74 20 63 68 61 72 20 2a 20 57 49 4e 41  onst char * WINA
4300: 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  PI sqlite3_colum
4310: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74  n_table_name_int
4320: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
4330: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
4340: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
4350: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76    const char *pv
4360: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
4370: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 73  umn_table_name(s
4380: 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a 70  tmt, iCol);.  *p
4390: 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20 30  len = (pval != 0
43a0: 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c 29  ) ? strlen(pval)
43b0: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70   : 0;.  return p
43c0: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
43d0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
43e0: 6e 73 74 20 76 6f 69 64 20 2a 20 57 49 4e 41 50  nst void * WINAP
43f0: 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  I sqlite3_column
4400: 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e  _table_name16_in
4410: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74  terop(sqlite3_st
4420: 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43  mt *stmt, int iC
4430: 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b  ol, int *plen).{
4440: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70  .  const void *p
4450: 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f  val = sqlite3_co
4460: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
4470: 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20  6(stmt, iCol);. 
4480: 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21   *plen = (pval !
4490: 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e 28 28 77  = 0) ? wcslen((w
44a0: 63 68 61 72 5f 74 20 2a 29 70 76 61 6c 29 20 2a  char_t *)pval) *
44b0: 20 73 69 7a 65 6f 66 28 77 63 68 61 72 5f 74 29   sizeof(wchar_t)
44c0: 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20 70   : 0;.  return p
44d0: 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70  val;.}..__declsp
44e0: 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63 6f  ec(dllexport) co
44f0: 6e 73 74 20 63 68 61 72 20 2a 20 57 49 4e 41 50  nst char * WINAP
4500: 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  I sqlite3_column
4510: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74  _origin_name_int
4520: 65 72 6f 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  erop(sqlite3_stm
4530: 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20 69 43 6f  t *stmt, int iCo
4540: 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29 0a 7b 0a  l, int *plen).{.
4550: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 76    const char *pv
4560: 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f 63 6f 6c  al = sqlite3_col
4570: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28  umn_origin_name(
4580: 73 74 6d 74 2c 20 69 43 6f 6c 29 3b 0a 20 20 2a  stmt, iCol);.  *
4590: 70 6c 65 6e 20 3d 20 28 70 76 61 6c 20 21 3d 20  plen = (pval != 
45a0: 30 29 20 3f 20 73 74 72 6c 65 6e 28 70 76 61 6c  0) ? strlen(pval
45b0: 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  ) : 0;.  return 
45c0: 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73  pval;.}..__decls
45d0: 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29 20 63  pec(dllexport) c
45e0: 6f 6e 73 74 20 76 6f 69 64 20 2a 20 57 49 4e 41  onst void * WINA
45f0: 50 49 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  PI sqlite3_colum
4600: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
4610: 69 6e 74 65 72 6f 70 28 73 71 6c 69 74 65 33 5f  interop(sqlite3_
4620: 73 74 6d 74 20 2a 73 74 6d 74 2c 20 69 6e 74 20  stmt *stmt, int 
4630: 69 43 6f 6c 2c 20 69 6e 74 20 2a 70 6c 65 6e 29  iCol, int *plen)
4640: 0a 7b 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  .{.  const void 
4650: 2a 70 76 61 6c 20 3d 20 73 71 6c 69 74 65 33 5f  *pval = sqlite3_
4660: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
4670: 6d 65 31 36 28 73 74 6d 74 2c 20 69 43 6f 6c 29  me16(stmt, iCol)
4680: 3b 0a 20 20 2a 70 6c 65 6e 20 3d 20 28 70 76 61  ;.  *plen = (pva
4690: 6c 20 21 3d 20 30 29 20 3f 20 77 63 73 6c 65 6e  l != 0) ? wcslen
46a0: 28 28 77 63 68 61 72 5f 74 20 2a 29 70 76 61 6c  ((wchar_t *)pval
46b0: 29 20 2a 20 73 69 7a 65 6f 66 28 77 63 68 61 72  ) * sizeof(wchar
46c0: 5f 74 29 20 3a 20 30 3b 0a 20 20 72 65 74 75 72  _t) : 0;.  retur
46d0: 6e 20 70 76 61 6c 3b 0a 7d 0a 0a 5f 5f 64 65 63  n pval;.}..__dec
46e0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
46f0: 20 69 6e 74 20 57 49 4e 41 50 49 20 73 71 6c 69   int WINAPI sqli
4700: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
4710: 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f  _metadata_intero
4720: 70 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63  p(sqlite3 *db, c
4730: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 44 62 4e 61  onst char *zDbNa
4740: 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  me, const char *
4750: 7a 54 61 62 6c 65 4e 61 6d 65 2c 20 63 6f 6e 73  zTableName, cons
4760: 74 20 63 68 61 72 20 2a 7a 43 6f 6c 75 6d 6e 4e  t char *zColumnN
4770: 61 6d 65 2c 20 63 68 61 72 20 2a 2a 70 7a 44 61  ame, char **pzDa
4780: 74 61 54 79 70 65 2c 20 63 68 61 72 20 2a 2a 70  taType, char **p
4790: 7a 43 6f 6c 6c 53 65 71 2c 20 69 6e 74 20 2a 70  zCollSeq, int *p
47a0: 4e 6f 74 4e 75 6c 6c 2c 20 69 6e 74 20 2a 70 50  NotNull, int *pP
47b0: 72 69 6d 61 72 79 4b 65 79 2c 20 69 6e 74 20 2a  rimaryKey, int *
47c0: 70 41 75 74 6f 69 6e 63 2c 20 69 6e 74 20 2a 70  pAutoinc, int *p
47d0: 64 74 4c 65 6e 2c 20 69 6e 74 20 2a 70 63 73 4c  dtLen, int *pcsL
47e0: 65 6e 29 0a 7b 0a 20 20 69 6e 74 20 6e 20 3d 20  en).{.  int n = 
47f0: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
4800: 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 64 62  lumn_metadata(db
4810: 2c 20 7a 44 62 4e 61 6d 65 2c 20 7a 54 61 62 6c  , zDbName, zTabl
4820: 65 4e 61 6d 65 2c 20 7a 43 6f 6c 75 6d 6e 4e 61  eName, zColumnNa
4830: 6d 65 2c 20 70 7a 44 61 74 61 54 79 70 65 2c 20  me, pzDataType, 
4840: 70 7a 43 6f 6c 6c 53 65 71 2c 20 70 4e 6f 74 4e  pzCollSeq, pNotN
4850: 75 6c 6c 2c 20 70 50 72 69 6d 61 72 79 4b 65 79  ull, pPrimaryKey
4860: 2c 20 70 41 75 74 6f 69 6e 63 29 3b 0a 20 20 2a  , pAutoinc);.  *
4870: 70 64 74 4c 65 6e 20 3d 20 28 2a 70 7a 44 61 74  pdtLen = (*pzDat
4880: 61 54 79 70 65 20 21 3d 20 30 29 20 3f 20 73 74  aType != 0) ? st
4890: 72 6c 65 6e 28 2a 70 7a 44 61 74 61 54 79 70 65  rlen(*pzDataType
48a0: 29 20 3a 20 30 3b 0a 20 20 2a 70 63 73 4c 65 6e  ) : 0;.  *pcsLen
48b0: 20 3d 20 28 2a 70 7a 43 6f 6c 6c 53 65 71 20 21   = (*pzCollSeq !
48c0: 3d 20 30 29 20 3f 20 73 74 72 6c 65 6e 28 2a 70  = 0) ? strlen(*p
48d0: 7a 43 6f 6c 6c 53 65 71 29 20 3a 20 30 3b 0a 0a  zCollSeq) : 0;..
48e0: 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 76    return n;.}..v
48f0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 75 70 64 61  oid sqlite3_upda
4900: 74 65 5f 63 61 6c 6c 62 61 63 6b 28 76 6f 69 64  te_callback(void
4910: 20 2a 70 41 72 67 2c 20 69 6e 74 20 74 79 70 65   *pArg, int type
4920: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 44  , const char *pD
4930: 61 74 61 62 61 73 65 2c 20 63 6f 6e 73 74 20 63  atabase, const c
4940: 68 61 72 20 2a 70 54 61 62 6c 65 2c 20 73 71 6c  har *pTable, sql
4950: 69 74 65 5f 69 6e 74 36 34 20 72 6f 77 69 64 29  ite_int64 rowid)
4960: 0a 7b 0a 20 20 53 51 4c 49 54 45 55 50 44 41 54  .{.  SQLITEUPDAT
4970: 45 48 4f 4f 4b 20 66 75 6e 63 20 3d 20 28 53 51  EHOOK func = (SQ
4980: 4c 49 54 45 55 50 44 41 54 45 48 4f 4f 4b 29 70  LITEUPDATEHOOK)p
4990: 41 72 67 3b 0a 0a 20 20 66 75 6e 63 28 74 79 70  Arg;..  func(typ
49a0: 65 2c 20 70 44 61 74 61 62 61 73 65 2c 20 73 74  e, pDatabase, st
49b0: 72 6c 65 6e 28 70 44 61 74 61 62 61 73 65 29 2c  rlen(pDatabase),
49c0: 20 70 54 61 62 6c 65 2c 20 73 74 72 6c 65 6e 28   pTable, strlen(
49d0: 70 54 61 62 6c 65 29 2c 20 72 6f 77 69 64 29 3b  pTable), rowid);
49e0: 0a 7d 0a 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .}..int sqlite3_
49f0: 63 6f 6d 6d 69 74 5f 63 61 6c 6c 62 61 63 6b 28  commit_callback(
4a00: 76 6f 69 64 20 2a 70 41 72 67 29 0a 7b 0a 20 20  void *pArg).{.  
4a10: 72 65 74 75 72 6e 20 28 28 53 51 4c 49 54 45 43  return ((SQLITEC
4a20: 4f 4d 4d 49 54 48 4f 4f 4b 29 70 41 72 67 29 28  OMMITHOOK)pArg)(
4a30: 29 3b 0a 7d 0a 0a 76 6f 69 64 20 73 71 6c 69 74  );.}..void sqlit
4a40: 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 63 61 6c 6c  e3_rollback_call
4a50: 62 61 63 6b 28 76 6f 69 64 20 2a 70 41 72 67 29  back(void *pArg)
4a60: 0a 7b 0a 20 20 28 28 53 51 4c 49 54 45 52 4f 4c  .{.  ((SQLITEROL
4a70: 4c 42 41 43 4b 48 4f 4f 4b 29 70 41 72 67 29 28  LBACKHOOK)pArg)(
4a80: 29 3b 0a 7d 0a 0a 5f 5f 64 65 63 6c 73 70 65 63  );.}..__declspec
4a90: 28 64 6c 6c 65 78 70 6f 72 74 29 20 76 6f 69 64  (dllexport) void
4aa0: 20 2a 20 57 49 4e 41 50 49 20 73 71 6c 69 74 65   * WINAPI sqlite
4ab0: 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 5f 69 6e  3_update_hook_in
4ac0: 74 65 72 6f 70 28 73 71 6c 69 74 65 33 20 2a 70  terop(sqlite3 *p
4ad0: 44 62 2c 20 53 51 4c 49 54 45 55 50 44 41 54 45  Db, SQLITEUPDATE
4ae0: 48 4f 4f 4b 20 66 75 6e 63 29 0a 7b 0a 20 20 72  HOOK func).{.  r
4af0: 65 74 75 72 6e 20 73 71 6c 69 74 65 33 5f 75 70  eturn sqlite3_up
4b00: 64 61 74 65 5f 68 6f 6f 6b 28 70 44 62 2c 20 73  date_hook(pDb, s
4b10: 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 63 61  qlite3_update_ca
4b20: 6c 6c 62 61 63 6b 2c 20 66 75 6e 63 29 3b 0a 7d  llback, func);.}
4b30: 0a 0a 5f 5f 64 65 63 6c 73 70 65 63 28 64 6c 6c  ..__declspec(dll
4b40: 65 78 70 6f 72 74 29 20 76 6f 69 64 20 2a 20 57  export) void * W
4b50: 49 4e 41 50 49 20 73 71 6c 69 74 65 33 5f 63 6f  INAPI sqlite3_co
4b60: 6d 6d 69 74 5f 68 6f 6f 6b 5f 69 6e 74 65 72 6f  mmit_hook_intero
4b70: 70 28 73 71 6c 69 74 65 33 20 2a 70 44 62 2c 20  p(sqlite3 *pDb, 
4b80: 53 51 4c 49 54 45 43 4f 4d 4d 49 54 48 4f 4f 4b  SQLITECOMMITHOOK
4b90: 20 66 75 6e 63 29 0a 7b 0a 20 20 72 65 74 75 72   func).{.  retur
4ba0: 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74  n sqlite3_commit
4bb0: 5f 68 6f 6f 6b 28 70 44 62 2c 20 73 71 6c 69 74  _hook(pDb, sqlit
4bc0: 65 33 5f 63 6f 6d 6d 69 74 5f 63 61 6c 6c 62 61  e3_commit_callba
4bd0: 63 6b 2c 20 66 75 6e 63 29 3b 0a 7d 0a 0a 5f 5f  ck, func);.}..__
4be0: 64 65 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f  declspec(dllexpo
4bf0: 72 74 29 20 76 6f 69 64 20 2a 20 57 49 4e 41 50  rt) void * WINAP
4c00: 49 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  I sqlite3_rollba
4c10: 63 6b 5f 68 6f 6f 6b 5f 69 6e 74 65 72 6f 70 28  ck_hook_interop(
4c20: 73 71 6c 69 74 65 33 20 2a 70 44 62 2c 20 53 51  sqlite3 *pDb, SQ
4c30: 4c 49 54 45 52 4f 4c 4c 42 41 43 4b 48 4f 4f 4b  LITEROLLBACKHOOK
4c40: 20 66 75 6e 63 29 0a 7b 0a 20 20 72 65 74 75 72   func).{.  retur
4c50: 6e 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  n sqlite3_rollba
4c60: 63 6b 5f 68 6f 6f 6b 28 70 44 62 2c 20 73 71 6c  ck_hook(pDb, sql
4c70: 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 63 61  ite3_rollback_ca
4c80: 6c 6c 62 61 63 6b 2c 20 66 75 6e 63 29 3b 0a 7d  llback, func);.}
4c90: 0a 0a 23 65 6e 64 69 66 20 2f 2f 20 4f 53 5f 57  ..#endif // OS_W
4ca0: 49 4e 0a                                         IN.