System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 229e35252b55610a484c899f95ae402496579b13:


0000: ef bb bf 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .../************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20  ************. * 
0040: 41 44 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61  ADO.NET 2.0 Data
0050: 20 50 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51   Provider for SQ
0060: 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58  Lite Version 3.X
0070: 0a 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52  . * Written by R
0080: 6f 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72  obert Simpson (r
0090: 6f 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c  obert@blackcastl
00a0: 65 73 6f 66 74 2e 63 6f 6d 29 0a 20 2a 20 0a 20  esoft.com). * . 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0a 20 2a 2a 2a 2a 2a 2a 2a 2a   risk!. ********
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2f 0a 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  /..namespace Sys
0130: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0a  tem.Data.SQLite.
0140: 7b 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  {.  using System
0150: 3b 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ;.  using System
0160: 2e 53 65 63 75 72 69 74 79 3b 0a 20 20 75 73 69  .Security;.  usi
0170: 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d  ng System.Runtim
0180: 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69 63 65  e.InteropService
0190: 73 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  s;..#if !PLATFOR
01a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
01b0: 52 4b 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  RK.  [SuppressUn
01c0: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
01d0: 69 74 79 5d 0a 23 65 6e 64 69 66 0a 20 20 69 6e  ity].#endif.  in
01e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
01f0: 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ass UnsafeNative
0200: 4d 65 74 68 6f 64 73 0a 20 20 7b 0a 23 69 66 20  Methods.  {.#if 
0210: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
0220: 0a 0a 23 69 66 20 21 55 53 45 5f 49 4e 54 45 52  ..#if !USE_INTER
0230: 4f 50 5f 44 4c 4c 0a 0a 23 69 66 20 21 50 4c 41  OP_DLL..#if !PLA
0240: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0250: 4d 45 57 4f 52 4b 0a 20 20 20 20 70 72 69 76 61  MEWORK.    priva
0260: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
0270: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79  SQLITE_DLL = "Sy
0280: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
0290: 2e 44 4c 4c 22 3b 0a 23 65 6c 73 65 0a 20 20 20  .DLL";.#else.   
02a0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
02b0: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
02c0: 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65  L = "SQLite.Inte
02d0: 72 6f 70 2e 30 35 39 2e 44 4c 4c 22 3b 0a 23 65  rop.059.DLL";.#e
02e0: 6e 64 69 66 20 2f 2f 20 50 4c 41 54 46 4f 52 4d  ndif // PLATFORM
02f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0300: 4b 0a 0a 23 65 6c 73 65 0a 20 20 20 20 70 72 69  K..#else.    pri
0310: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
0320: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
0330: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 44  SQLite.Interop.D
0340: 4c 4c 22 3b 0a 23 65 6e 64 69 66 20 2f 2f 20 55  LL";.#endif // U
0350: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0a 0a  SE_INTEROP_DLL..
0360: 23 65 6c 73 65 0a 20 20 20 20 70 72 69 76 61 74  #else.    privat
0370: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  e const string S
0380: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c  QLITE_DLL = "sql
0390: 69 74 65 33 22 3b 0a 23 65 6e 64 69 66 0a 0a 20  ite3";.#endif.. 
03a0: 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69     // This secti
03b0: 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20  on uses interop 
03c0: 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20  calls that also 
03d0: 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74  fetch text lengt
03e0: 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f  h to optimize co
03f0: 6e 76 65 72 73 69 6f 6e 2e 20 20 0a 20 20 20 20  nversion.  .    
0400: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
0410: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
0420: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
0430: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
0440: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
0450: 6c 6c 73 20 61 6e 64 20 64 6f 20 75 6e 6f 70 74  lls and do unopt
0460: 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f  imized conversio
0470: 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65 72  ns instead after
0480: 77 61 72 64 73 0a 20 20 20 20 23 72 65 67 69 6f  wards.    #regio
0490: 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20  n interop added 
04a0: 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73  textlength calls
04b0: 0a 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
04c0: 41 4e 44 41 52 44 0a 20 20 20 20 5b 44 6c 6c 49  ANDARD.    [DllI
04d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
04e0: 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  )].    internal 
04f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
0500: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
0510: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
0520: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
0530: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
0540: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a   out int len);..
0550: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
0560: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
0570: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0580: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
0590: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
05a0: 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
05b0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
05c0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
05d0: 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44  nt len);..    [D
05e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
05f0: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
0600: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
0610: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
0620: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
0630: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
0640: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
0650: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
0660: 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  en);..    [DllIm
0670: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
0680: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
0690: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
06a0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
06b0: 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65  mn_decltype_inte
06c0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
06d0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
06e0: 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b  int len);..    [
06f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
0700: 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72  _DLL)].    inter
0710: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
0720: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
0730: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
0740: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
0750: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
0760: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
0770: 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
0780: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20  (SQLITE_DLL)].  
0790: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
07a0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
07b0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
07c0: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
07d0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
07e0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
07f0: 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ;..    [DllImpor
0800: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20  t(SQLITE_DLL)]. 
0810: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
0820: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
0830: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
0840: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
0850: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
0860: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
0870: 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  en);..    [DllIm
0880: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
0890: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
08a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
08b0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
08c0: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69  mn_origin_name_i
08d0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
08e0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
08f0: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20  ut int len);..  
0900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
0910: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
0920: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
0930: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
0940: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
0950: 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
0960: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
0970: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
0980: 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c   len);..    [Dll
0990: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
09a0: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
09b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
09c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
09d0: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f  lumn_table_name_
09e0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
09f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
0a00: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20  out int len);.. 
0a10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
0a20: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69  LITE_DLL)].    i
0a30: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
0a40: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
0a50: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
0a60: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
0a70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
0a80: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
0a90: 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c   len);..    [Dll
0aa0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
0ab0: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
0ac0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
0ad0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
0ae0: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
0af0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
0b00: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
0b10: 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c  t len);..    [Dl
0b20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
0b30: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
0b40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
0b50: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
0b60: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
0b70: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
0b80: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
0b90: 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20   int len);..    
0ba0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
0bb0: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
0bc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
0bd0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
0be0: 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70  3_errmsg_interop
0bf0: 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74 20  (IntPtr db, out 
0c00: 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b  int len);..    [
0c10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
0c20: 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72  _DLL)].    inter
0c30: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
0c40: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72  n int sqlite3_pr
0c50: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
0c60: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
0c70: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
0c80: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
0c90: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
0ca0: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
0cb0: 20 6e 52 65 6d 61 69 6e 29 3b 0a 0a 20 20 20 20   nRemain);..    
0cc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
0cd0: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
0ce0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
0cf0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74  rn int sqlite3_t
0d00: 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61  able_column_meta
0d10: 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74  data_interop(Int
0d20: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
0d30: 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
0d40: 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f  lName, byte[] co
0d50: 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  lName, out IntPt
0d60: 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f  r ptrDataType, o
0d70: 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c  ut IntPtr ptrCol
0d80: 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f  lSeq, out int no
0d90: 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70  tNull, out int p
0da0: 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69  rimaryKey, out i
0db0: 6e 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20  nt autoInc, out 
0dc0: 69 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69  int dtLen, out i
0dd0: 6e 74 20 63 73 4c 65 6e 29 3b 0a 0a 20 20 20 20  nt csLen);..    
0de0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
0df0: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
0e00: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
0e10: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
0e20: 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74  3_value_text_int
0e30: 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f  erop(IntPtr p, o
0e40: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20  ut int len);..  
0e50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
0e60: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
0e70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
0e80: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
0e90: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
0ea0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
0eb0: 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  p, out int len);
0ec0: 0a 23 65 6e 64 69 66 0a 0a 20 20 20 20 23 65 6e  .#endif..    #en
0ed0: 64 72 65 67 69 6f 6e 0a 0a 20 20 20 20 2f 2f 20  dregion..    // 
0ee0: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
0ef0: 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e  add existing fun
0f00: 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f  ctionality on to
0f10: 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  p of SQLite and 
0f20: 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65  require a little
0f30: 20 65 66 66 6f 72 74 20 74 6f 0a 20 20 20 20 2f   effort to.    /
0f40: 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68  / get working wh
0f50: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
0f60: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62  ndard SQLite lib
0f70: 72 61 72 79 2e 0a 20 20 20 20 23 72 65 67 69 6f  rary..    #regio
0f80: 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20  n interop added 
0f90: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0a 0a 23  functionality..#
0fa0: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
0fb0: 41 52 44 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ARD.    [DllImpo
0fc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
0fd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
0fe0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
0ff0: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74  qlite3_close_int
1000: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
1010: 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1020: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20  (SQLITE_DLL)].  
1030: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1040: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1050: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
1060: 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74  tion_interop(Int
1070: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
1080: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
1090: 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
10a0: 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
10b0: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
10c0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
10d0: 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
10e0: 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
10f0: 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c  al, int needColl
1100: 53 65 71 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49  Seq);..    [DllI
1110: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1120: 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  )].    internal 
1130: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1140: 74 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  t sqlite3_finali
1150: 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
1160: 72 20 73 74 6d 74 29 3b 0a 0a 20 20 20 20 5b 44  r stmt);..    [D
1170: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1180: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
1190: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11a0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65   int sqlite3_ope
11b0: 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d  n_interop(byte[]
11c0: 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 69   utf8Filename, i
11d0: 6e 74 20 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e  nt flags, out In
11e0: 74 50 74 72 20 64 62 29 3b 0a 0a 20 20 20 20 5b  tPtr db);..    [
11f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1200: 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72  _DLL)].    inter
1210: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1220: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70  n int sqlite3_op
1230: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
1240: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
1250: 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 6f 75 74  , int flags, out
1260: 20 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 20 20   IntPtr db);..  
1270: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1280: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
1290: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12a0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
12b0: 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
12c0: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a 20 20  ntPtr stmt);..  
12d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12e0: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
12f0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1300: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1310: 5f 69 6e 69 74 69 61 6c 69 7a 65 5f 69 6e 74 65  _initialize_inte
1320: 72 6f 70 28 29 3b 0a 0a 23 65 6e 64 69 66 0a 0a  rop();..#endif..
1330: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0a 0a      #endregion..
1340: 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64      // The stand
1350: 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75  ard api call equ
1360: 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20  ivalents of the 
1370: 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61  above interop ca
1380: 6c 6c 73 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  lls.    #region 
1390: 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e  standard version
13a0: 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e  s of interop fun
13b0: 63 74 69 6f 6e 73 0a 0a 23 69 66 20 53 51 4c 49  ctions..#if SQLI
13c0: 54 45 5f 53 54 41 4e 44 41 52 44 0a 23 69 66 20  TE_STANDARD.#if 
13d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13e0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
13f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1400: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1410: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1420: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1430: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
1440: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1450: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1460: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1470: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1480: 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  te3_close(IntPtr
1490: 20 64 62 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54   db);..#if !PLAT
14a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14b0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
14c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14e0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14f0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
1500: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
1510: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1520: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
1530: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1540: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1550: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
1560: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1570: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
1580: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
1590: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
15a0: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
15b0: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
15c0: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
15d0: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
15e0: 69 6e 61 6c 29 3b 0a 0a 23 69 66 20 21 50 4c 41  inal);..#if !PLA
15f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1600: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1610: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1620: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1630: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1640: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1650: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1660: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1670: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1680: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1690: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
16a0: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
16b0: 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21 50 4c 41  stmt);..#if !PLA
16c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16d0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
16e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1700: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1710: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1720: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1730: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1740: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1750: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1760: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1770: 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
1780: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75 74  tf8Filename, out
1790: 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20   IntPtr db, int 
17a0: 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76 66  flags, IntPtr vf
17b0: 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  s);..#if !PLATFO
17c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17d0: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
17e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1800: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1810: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1820: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1830: 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a 20 20  icode)].#else.  
1840: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1850: 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1860: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1870: 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  de)].#endif.    
1880: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1890: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
18a0: 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
18b0: 20 66 69 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49   fileName, out I
18c0: 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66 20  ntPtr db);..#if 
18d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18e0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
18f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1900: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1910: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1920: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1930: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
1940: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1950: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1960: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1970: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1980: 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72  te3_reset(IntPtr
1990: 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21 50 4c   stmt);..#if !PL
19a0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19b0: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
19c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a00: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
1a10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a20: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
1a30: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a40: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a50: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1a60: 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
1a70: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a80: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a90: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1aa0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ab0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1ac0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ad0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ae0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
1af0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
1b10: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
1b20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1b30: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1b40: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
1b50: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1b60: 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20  nt index);..#if 
1b70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b80: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
1b90: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ba0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1bb0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1bc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1bd0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
1be0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bf0: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1c00: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c10: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c20: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
1c30: 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e  tabase_name16(In
1c40: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1c50: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
1c60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c70: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1c80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ca0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1cb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1cc0: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1cd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ce0: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1cf0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d00: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d10: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
1d20: 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
1d30: 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66  int index);..#if
1d40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d50: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
1d60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d70: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d80: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1da0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
1db0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dc0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
1dd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1de0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1df0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1e00: 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72  ecltype16(IntPtr
1e10: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1e20: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
1e30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e40: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
1e50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e80: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
1e90: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
1ea0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
1eb0: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
1ec0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ed0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1ee0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  olumn_name(IntPt
1ef0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1f00: 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  x);..#if !PLATFO
1f10: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f20: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
1f30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
1f70: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
1f80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
1f90: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
1fa0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fb0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1fc0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
1fd0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1fe0: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
1ff0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2000: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
2010: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
2020: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
2030: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
2040: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
2050: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
2060: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2070: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
2080: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2090: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
20a0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
20b0: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
20c0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a  t, int index);..
20d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
20f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2100: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
2110: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
2120: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2130: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
2140: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2150: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
2160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2170: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
2180: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
2190: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28  n_origin_name16(
21a0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
21b0: 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50   index);..#if !P
21c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21d0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
21e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2200: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2210: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2220: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
2230: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2240: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
2250: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2260: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
2270: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
2280: 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
2290: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a  mt, int index);.
22a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
22c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2300: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
2310: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2320: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
2330: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
2340: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
2350: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
2360: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
2370: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
2380: 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50   index);..#if !P
2390: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23a0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
23b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23f0: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
2400: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2410: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
2420: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2430: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
2440: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
2450: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
2460: 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21  t index);..#if !
2470: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2480: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
2490: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24d0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
24e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24f0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
2500: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2510: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
2520: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
2530: 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
2540: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
2550: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2560: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
2570: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
2580: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
2590: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25b0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
25c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25d0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
25e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25f0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
2600: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
2610: 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66  IntPtr db);..#if
2620: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2630: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
2640: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2650: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
2660: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
2670: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2680: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
2690: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26a0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
26b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26c0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
26d0: 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74  ite3_prepare(Int
26e0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70  Ptr db, IntPtr p
26f0: 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c  Sql, int nBytes,
2700: 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74   out IntPtr stmt
2710: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
2720: 52 65 6d 61 69 6e 29 3b 0a 0a 23 69 66 20 21 50  Remain);..#if !P
2730: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2740: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
2750: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2760: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2770: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2780: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2790: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
27a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27b0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
27c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
27d0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
27e0: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
27f0: 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
2800: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
2810: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
2820: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
2830: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
2840: 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e  DataType, out In
2850: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
2860: 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   out int notNull
2870: 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72  , out int primar
2880: 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75  yKey, out int au
2890: 74 6f 49 6e 63 29 3b 0a 0a 23 69 66 20 21 50 4c  toInc);..#if !PL
28a0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28b0: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
28c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2900: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
2910: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
2920: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
2930: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
2940: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
2950: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49  te3_value_text(I
2960: 6e 74 50 74 72 20 70 29 3b 0a 0a 23 69 66 20 21  ntPtr p);..#if !
2970: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2980: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
2990: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
29a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
29b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
29c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
29d0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
29e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29f0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
2a00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2a10: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
2a20: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
2a30: 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0a 23 65  16(IntPtr p);.#e
2a40: 6e 64 69 66 0a 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
2a50: 67 69 6f 6e 0a 0a 20 20 20 20 2f 2f 20 54 68 65  gion..    // The
2a60: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
2a70: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
2a80: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
2a90: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
2aa0: 6d 65 74 68 6f 64 2e 0a 20 20 20 20 2f 2f 20 41  method..    // A
2ab0: 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22  ll of them are "
2ac0: 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61  nice to haves" a
2ad0: 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  nd not necessari
2ae0: 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65  ly "need to have
2af0: 73 22 2e 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  s"..    #region 
2b00: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
2b10: 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0a 0a 23  andard method..#
2b20: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2b30: 41 52 44 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ARD.    [DllImpo
2b40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2b50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2b60: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
2b70: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  r sqlite3_contex
2b80: 74 5f 63 6f 6c 6c 73 65 71 28 49 6e 74 50 74 72  t_collseq(IntPtr
2b90: 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e   context, out in
2ba0: 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20  t type, out int 
2bb0: 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  enc, out int len
2bc0: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
2bd0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2be0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2bf0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
2c00: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
2c10: 6f 6c 6c 63 6f 6d 70 61 72 65 28 49 6e 74 50 74  ollcompare(IntPt
2c20: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
2c30: 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c  ] p1, int p1len,
2c40: 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20   byte[] p2, int 
2c50: 70 32 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c  p2len);..    [Dl
2c60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2c70: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
2c80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2c90: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 75 72 73  int sqlite3_curs
2ca0: 6f 72 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  or_rowid(IntPtr 
2cb0: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
2cc0: 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64  , out long rowid
2cd0: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
2ce0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2cf0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2d00: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
2d10: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c  qlite3_index_col
2d20: 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70  umn_info_interop
2d30: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
2d40: 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65  [] catalog, byte
2d50: 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79  [] IndexName, by
2d60: 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c  te[] ColumnName,
2d70: 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64   out int sortOrd
2d80: 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72  er, out int onEr
2d90: 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ror, out IntPtr 
2da0: 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69  Collation, out i
2db0: 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0a 0a 20 20  nt colllen);..  
2dc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2dd0: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
2de0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
2df0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
2e00: 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65 72  3_resetall_inter
2e10: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a  op(IntPtr db);..
2e20: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2e30: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
2e40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2e50: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
2e60: 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 28  e3_table_cursor(
2e70: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
2e80: 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f   db, int tableRo
2e90: 6f 74 50 61 67 65 29 3b 0a 23 65 6e 64 69 66 0a  otPage);.#endif.
2ea0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0a  .    #endregion.
2eb0: 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 61 72  .    // These ar
2ec0: 65 20 6f 62 73 6f 6c 65 74 65 20 61 6e 64 20 77  e obsolete and w
2ed0: 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 69  ill be removed i
2ee0: 6e 20 74 68 65 20 66 75 74 75 72 65 20 0a 20 20  n the future .  
2ef0: 20 20 23 72 65 67 69 6f 6e 20 77 69 6e 64 6f 77    #region window
2f00: 73 20 6e 74 66 73 20 66 69 6c 65 73 79 73 74 65  s ntfs filesyste
2f10: 6d 20 6f 6e 6c 79 0a 0a 23 69 66 20 21 53 51 4c  m only..#if !SQL
2f20: 49 54 45 5f 53 54 41 4e 44 41 52 44 0a 20 20 20  ITE_STANDARD.   
2f30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
2f40: 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
2f50: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
2f60: 65 2c 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20  e, SetLastError 
2f70: 3d 20 74 72 75 65 29 5d 0a 20 20 20 20 69 6e 74  = true)].    int
2f80: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2f90: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
2fa0: 63 6f 6d 70 72 65 73 73 66 69 6c 65 28 73 74 72  compressfile(str
2fb0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0a 0a  ing fileName);..
2fc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2fd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
2fe0: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
2ff0: 63 6f 64 65 2c 20 53 65 74 4c 61 73 74 45 72 72  code, SetLastErr
3000: 6f 72 20 3d 20 74 72 75 65 29 5d 0a 20 20 20 20  or = true)].    
3010: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3020: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
3030: 65 33 5f 64 65 63 6f 6d 70 72 65 73 73 66 69 6c  e3_decompressfil
3040: 65 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  e(string fileNam
3050: 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 20 20 20 20  e);.#endif..    
3060: 23 65 6e 64 72 65 67 69 6f 6e 0a 0a 20 20 20 20  #endregion..    
3070: 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
3080: 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
3090: 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
30a0: 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
30b0: 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
30c0: 72 6f 70 20 63 61 6c 6c 73 0a 20 20 20 20 2f 2f  rop calls.    //
30d0: 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65   scattered in he
30e0: 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65  re, but they are
30f0: 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65   only active whe
3100: 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  n PLATFORM_COMPA
3110: 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64  CTFRAMEWORK is d
3120: 65 63 6c 61 72 65 64 2e 0a 20 20 20 20 23 72 65  eclared..    #re
3130: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71  gion standard sq
3140: 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0a 0a  lite api calls..
3150: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
3160: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
3170: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3180: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
3190: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
31a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
31b0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
31c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
31d0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
31e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
31f0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
3200: 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  tr sqlite3_libve
3210: 72 73 69 6f 6e 28 29 3b 0a 0a 23 69 66 20 21 50  rsion();..#if !P
3220: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3230: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
3240: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
3250: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
3260: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
3270: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
3280: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
3290: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
32a0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
32b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
32c0: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
32d0: 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
32e0: 50 74 72 20 64 62 29 3b 0a 0a 23 69 66 20 21 50  Ptr db);..#if !P
32f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3300: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
3310: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
3320: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
3330: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
3340: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
3350: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
3360: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
3370: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
3380: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
3390: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
33a0: 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72  3_changes(IntPtr
33b0: 20 64 62 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54   db);..#if !PLAT
33c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
33d0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
33e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
33f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
3400: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
3410: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
3420: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
3430: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
3440: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
3450: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
3460: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
3470: 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50  usy_timeout(IntP
3480: 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0a  tr db, int ms);.
3490: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
34a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
34b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
34c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
34d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
34e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
34f0: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
3500: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3510: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
3520: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
3530: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
3540: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c   sqlite3_bind_bl
3550: 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
3560: 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b  int index, Byte[
3570: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
3580: 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e  ze, IntPtr nTran
3590: 73 69 65 6e 74 29 3b 0a 0a 23 69 66 20 21 50 4c  sient);..#if !PL
35a0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
35b0: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
35c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
35d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
35e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
35f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
3600: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
3610: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
3620: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
3630: 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
3640: 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62   int index, doub
3650: 6c 65 20 76 61 6c 75 65 29 3b 0a 23 65 6c 73 65  le value);.#else
3660: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
3670: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20  SQLITE_DLL)].   
3680: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3690: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
36a0: 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f  te3_bind_double_
36b0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
36c0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
36d0: 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
36e0: 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 21  );.#endif..#if !
36f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
3700: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
3710: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
3720: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
3730: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
3740: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
3750: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
3760: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
3770: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
3780: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3790: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
37a0: 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50  e3_bind_int(IntP
37b0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
37c0: 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0a  ex, int value);.
37d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
37e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
37f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3800: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
3810: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
3820: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
3830: 2e 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74  .Cdecl)].    int
3840: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3850: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
3860: 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
3870: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
3880: 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0a  x, long value);.
3890: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
38a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
38b0: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
38c0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
38d0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
38e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
38f0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
3900: 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
3910: 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66  ue);.#endif..#if
3920: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3930: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
3940: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3950: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
3960: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
3970: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
3980: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
3990: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
39a0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
39b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
39c0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
39d0: 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49  ite3_bind_null(I
39e0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
39f0: 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c  index);..#if !PL
3a00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
3a10: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
3a20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
3a30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
3a40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
3a50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
3a60: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
3a70: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3a80: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
3a90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
3aa0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
3ab0: 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74  _bind_text(IntPt
3ac0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
3ad0: 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, byte[] value,
3ae0: 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
3af0: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0a 0a  r pvReserved);..
3b00: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
3b10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
3b20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3b30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
3b40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
3b50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
3b60: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
3b70: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3b80: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
3b90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
3ba0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
3bb0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
3bc0: 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74  ameter_count(Int
3bd0: 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20  Ptr stmt);..#if 
3be0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3bf0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
3c00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
3c10: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
3c20: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
3c30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
3c40: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
3c50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
3c60: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
3c70: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3c80: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
3c90: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
3ca0: 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20  er_index(IntPtr 
3cb0: 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  stmt, byte[] str
3cc0: 4e 61 6d 65 29 3b 0a 0a 23 69 66 20 21 50 4c 41  Name);..#if !PLA
3cd0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
3ce0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
3cf0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3d00: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
3d10: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
3d20: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
3d30: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
3d40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
3d50: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
3d60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3d70: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
3d80: 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74  column_count(Int
3d90: 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20  Ptr stmt);..#if 
3da0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3db0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
3dc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
3dd0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
3de0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
3df0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
3e00: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
3e10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
3e20: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
3e30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3e40: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
3e50: 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20  te3_step(IntPtr 
3e60: 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21 50 4c 41  stmt);..#if !PLA
3e70: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
3e80: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
3e90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3ea0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
3eb0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
3ec0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
3ed0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3ee0: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
3ef0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
3f00: 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
3f10: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
3f20: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
3f30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3f40: 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  )].    internal 
3f50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
3f60: 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
3f70: 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  n_double_interop
3f80: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
3f90: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75  t index, out dou
3fa0: 62 6c 65 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64  ble value);.#end
3fb0: 69 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  if..#if !PLATFOR
3fc0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
3fd0: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
3fe0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
3ff0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
4000: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
4010: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
4020: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
4030: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
4040: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
4050: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4060: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
4070: 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  mn_int(IntPtr st
4080: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a  mt, int index);.
4090: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
40a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
40b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
40c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
40d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
40e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
40f0: 2e 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74  .Cdecl)].    int
4100: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4110: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
4120: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
4130: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
4140: 6e 64 65 78 29 3b 0a 23 65 6c 73 65 0a 20 20 20  ndex);.#else.   
4150: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4160: 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74  TE_DLL)].    int
4170: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4180: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
4190: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
41a0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
41b0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
41c0: 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0a 23  t long value);.#
41d0: 65 6e 64 69 66 0a 0a 23 69 66 20 21 50 4c 41 54  endif..#if !PLAT
41e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
41f0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
4200: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
4210: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4220: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
4230: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
4240: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
4250: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4260: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
4270: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4280: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
4290: 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
42a0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
42b0: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
42c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
42d0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
42e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
42f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
4300: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
4310: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
4320: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
4330: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4340: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
4350: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4360: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
4370: 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74  column_bytes(Int
4380: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
4390: 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  dex);..#if !PLAT
43a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
43b0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
43c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
43d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
43e0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
43f0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
4400: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
4410: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4420: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
4430: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4440: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
4450: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4460: 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
4470: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
4480: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4490: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
44a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
44b0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
44c0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
44d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
44e0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
44f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4500: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
4510: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4520: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
4530: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
4540: 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
4550: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
4560: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
4570: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
4580: 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
4590: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
45a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
45b0: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
45c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
45d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
45e0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
45f0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
4600: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
4610: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
4620: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
4630: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4640: 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
4650: 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
4660: 74 72 20 63 6f 6e 74 65 78 74 29 3b 0a 0a 23 69  tr context);..#i
4670: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4680: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
4690: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
46a0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
46b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
46c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
46d0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
46e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
46f0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
4700: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4710: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
4720: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
4730: 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0a 0a  lob(IntPtr p);..
4740: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4750: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
4760: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4770: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
4780: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
4790: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
47a0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
47b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
47c0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
47d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
47e0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
47f0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
4800: 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0a 0a  tes(IntPtr p);..
4810: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4820: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
4830: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4840: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
4850: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
4860: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
4870: 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65  Cdecl)].    inte
4880: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4890: 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
48a0: 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49  3_value_double(I
48b0: 6e 74 50 74 72 20 70 29 3b 0a 23 65 6c 73 65 0a  ntPtr p);.#else.
48c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
48d0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
48e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
48f0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
4900: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
4910: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
4920: 70 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61  p, out double va
4930: 6c 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69  lue);.#endif..#i
4940: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4950: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
4960: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4970: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
4980: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
4990: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
49a0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
49b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
49c0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
49d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
49e0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
49f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
4a00: 49 6e 74 50 74 72 20 70 29 3b 0a 0a 23 69 66 20  IntPtr p);..#if 
4a10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
4a20: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
4a30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4a40: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
4a50: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
4a60: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
4a70: 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  l)].    internal
4a80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
4a90: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ong sqlite3_valu
4aa0: 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70  e_int64(IntPtr p
4ab0: 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  );.#else.    [Dl
4ac0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4ad0: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
4ae0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4af0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
4b00: 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  ue_int64_interop
4b10: 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49  (IntPtr p, out I
4b20: 6e 74 36 34 20 76 61 6c 75 65 29 3b 0a 23 65 6e  nt64 value);.#en
4b30: 64 69 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  dif..#if !PLATFO
4b40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
4b50: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
4b60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
4b70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4b80: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
4b90: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
4ba0: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
4bb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
4bc0: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
4bd0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4be0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
4bf0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
4c00: 28 49 6e 74 50 74 72 20 70 29 3b 0a 0a 23 69 66  (IntPtr p);..#if
4c10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4c20: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
4c30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4c40: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
4c50: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
4c60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
4c70: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
4c80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4c90: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
4ca0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4cb0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
4cc0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
4cd0: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
4ce0: 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
4cf0: 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
4d00: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0a 0a  r pvReserved);..
4d10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4d20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
4d30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4d40: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
4d50: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
4d60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
4d70: 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65  Cdecl)].    inte
4d80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4d90: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
4da0: 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
4db0: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
4dc0: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0a 23 65 6c  uble value);.#el
4dd0: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
4de0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20  t(SQLITE_DLL)]. 
4df0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4e00: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
4e10: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
4e20: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
4e30: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
4e40: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0a   double value);.
4e50: 23 65 6e 64 69 66 0a 0a 23 69 66 20 21 50 4c 41  #endif..#if !PLA
4e60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4e70: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
4e80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4e90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
4ea0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
4eb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
4ec0: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
4ed0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4ee0: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
4ef0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4f00: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
4f10: 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
4f20: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
4f30: 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
4f40: 20 6e 4c 65 6e 29 3b 0a 0a 23 69 66 20 21 50 4c   nLen);..#if !PL
4f50: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
4f60: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
4f70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4f80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
4f90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
4fa0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
4fb0: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
4fc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4fd0: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
4fe0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4ff0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
5000: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74  3_result_int(Int
5010: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
5020: 20 76 61 6c 75 65 29 3b 0a 0a 23 69 66 20 21 50   value);..#if !P
5030: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5040: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
5050: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5060: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
5070: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
5080: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
5090: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
50a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
50b0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
50c0: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
50d0: 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
50e0: 65 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  e);.#else.    [D
50f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5100: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
5110: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5120: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
5130: 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
5140: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
5150: 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
5160: 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66  ue);.#endif..#if
5170: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
5180: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
5190: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
51a0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
51b0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
51c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
51d0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
51e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
51f0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
5200: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5210: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
5220: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c  lite3_result_nul
5230: 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  l(IntPtr context
5240: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
5250: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5260: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
5270: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
5280: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
5290: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
52a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
52b0: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
52c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
52d0: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
52e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
52f0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
5300: 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ult_text(IntPtr 
5310: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
5320: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  value, int nLen,
5330: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
5340: 65 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ed);..#if !PLATF
5350: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5360: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
5370: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5380: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5390: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
53a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
53b0: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
53c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
53d0: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
53e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
53f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5400: 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65  _aggregate_conte
5410: 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
5420: 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0a  t, int nBytes);.
5430: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
5440: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
5450: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5460: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
5470: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
5480: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5490: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
54a0: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
54b0: 65 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  e)].#else.    [D
54c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
54d0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
54e0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
54f0: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
5500: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5510: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
5520: 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74  ind_text16(IntPt
5530: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5540: 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c  x, string value,
5550: 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
5560: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0a 0a  r pvReserved);..
5570: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
5580: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
5590: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
55a0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
55b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
55c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
55d0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
55e0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
55f0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
5600: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5610: 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
5620: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0a  arSet.Unicode)].
5630: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
5640: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5650: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
5660: 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e  esult_error16(In
5670: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
5680: 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e  ring strName, in
5690: 74 20 6e 4c 65 6e 29 3b 0a 0a 23 69 66 20 21 50  t nLen);..#if !P
56a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
56b0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
56c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
56d0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
56e0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
56f0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
5700: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
5710: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0a 23 65 6c  et.Unicode)].#el
5720: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
5730: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
5740: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
5750: 55 6e 69 63 6f 64 65 29 5d 0a 23 65 6e 64 69 66  Unicode)].#endif
5760: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5770: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
5780: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
5790: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
57a0: 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
57b0: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
57c0: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
57d0: 65 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ed);..#if !PLATF
57e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
57f0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
5800: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5810: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5820: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5830: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
5840: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
5850: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
5860: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
5870: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5880: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6b 65  n int sqlite3_ke
5890: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
58a0: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
58b0: 6c 65 6e 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  len);..#if !PLAT
58c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
58d0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
58e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
58f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5900: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5910: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
5920: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
5930: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5940: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
5950: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5960: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72  rn int sqlite3_r
5970: 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
5980: 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
5990: 6b 65 79 6c 65 6e 29 3b 0a 0a 23 69 66 20 21 50  keylen);..#if !P
59a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
59b0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
59c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
59d0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
59e0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
59f0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
5a00: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
5a10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5a20: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
5a30: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5a40: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5a50: 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
5a60: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
5a70: 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b  teUpdateCallback
5a80: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
5a90: 55 73 65 72 29 3b 0a 0a 23 69 66 20 21 50 4c 41  User);..#if !PLA
5aa0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5ab0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
5ac0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5ad0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
5ae0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
5af0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
5b00: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
5b10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5b20: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
5b30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5b40: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5b50: 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49  e3_commit_hook(I
5b60: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
5b70: 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
5b80: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
5b90: 65 72 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  er);..#if !PLATF
5ba0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5bb0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
5bc0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5bd0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5be0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5bf0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
5c00: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
5c10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
5c20: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
5c30: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5c40: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5c50: 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49  _rollback_hook(I
5c60: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
5c70: 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b  RollbackCallback
5c80: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
5c90: 55 73 65 72 29 3b 0a 0a 23 69 66 20 21 50 4c 41  User);..#if !PLA
5ca0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5cb0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
5cc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5cd0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
5ce0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
5cf0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
5d00: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
5d10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5d20: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
5d30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5d40: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5d50: 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
5d60: 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20  Ptr stmt);..#if 
5d70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5d80: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
5d90: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5da0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
5db0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
5dc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
5dd0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
5de0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5df0: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
5e00: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e10: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5e20: 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
5e30: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
5e40: 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21  tr stmt);..#if !
5e50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
5e60: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
5e70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5e80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5e90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5ea0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5eb0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
5ec0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5ed0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
5ee0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5ef0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
5f00: 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64  e3_exec(IntPtr d
5f10: 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c  b, byte[] strSql
5f20: 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62  , IntPtr pvCallb
5f30: 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61  ack, IntPtr pvPa
5f40: 72 61 6d 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ram, out IntPtr 
5f50: 65 72 72 4d 73 67 29 3b 0a 0a 20 20 20 20 23 65  errMsg);..    #e
5f60: 6e 64 72 65 67 69 6f 6e 0a 20 20 7d 0a 0a 23 69  ndregion.  }..#i
5f70: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
5f80: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 69 6e  CTFRAMEWORK.  in
5f90: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5fa0: 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
5fb0: 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
5fc0: 6c 65 0a 20 20 7b 0a 20 20 20 20 70 72 69 76 61  le.  {.    priva
5fd0: 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65  te bool _isClose
5fe0: 64 3b 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  d;.    protected
5ff0: 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0a   IntPtr handle;.
6000: 20 20 20 20 0a 20 20 20 20 70 72 6f 74 65 63 74      .    protect
6010: 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ed CriticalHandl
6020: 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64  e(IntPtr invalid
6030: 48 61 6e 64 6c 65 56 61 6c 75 65 29 0a 20 20 20  HandleValue).   
6040: 20 7b 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20   {.      handle 
6050: 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
6060: 61 6c 75 65 3b 0a 20 20 20 20 20 20 5f 69 73 43  alue;.      _isC
6070: 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  losed = false;. 
6080: 20 20 20 7d 0a 0a 20 20 20 20 7e 43 72 69 74 69     }..    ~Criti
6090: 63 61 6c 48 61 6e 64 6c 65 28 29 0a 20 20 20 20  calHandle().    
60a0: 7b 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  {.      Dispose(
60b0: 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 0a 20  false);.    }.. 
60c0: 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
60d0: 43 6c 65 61 6e 75 70 28 29 0a 20 20 20 20 7b 0a  Cleanup().    {.
60e0: 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
60f0: 73 65 64 29 0a 20 20 20 20 20 20 7b 0a 20 20 20  sed).      {.   
6100: 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
6110: 73 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20  sed = true;.    
6120: 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c      if (!IsInval
6130: 69 64 29 0a 20 20 20 20 20 20 20 20 7b 0a 20 20  id).        {.  
6140: 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
6150: 61 6e 64 6c 65 28 29 3b 0a 20 20 20 20 20 20 20  andle();.       
6160: 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
6170: 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0a 20 20  nalize(this);.  
6180: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a        }.      }.
6190: 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69      }..    publi
61a0: 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0a 20  c void Close(). 
61b0: 20 20 20 7b 0a 20 20 20 20 20 20 44 69 73 70 6f     {.      Dispo
61c0: 73 65 28 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a  se(true);.    }.
61d0: 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
61e0: 20 44 69 73 70 6f 73 65 28 29 0a 20 20 20 20 7b   Dispose().    {
61f0: 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
6200: 72 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  rue);.    }..   
6210: 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
6220: 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
6230: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0a  bool disposing).
6240: 20 20 20 20 7b 0a 20 20 20 20 20 20 43 6c 65 61      {.      Clea
6250: 6e 75 70 28 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  nup();.    }..  
6260: 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74    protected abst
6270: 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ract bool Releas
6280: 65 48 61 6e 64 6c 65 28 29 3b 0a 0a 20 20 20 20  eHandle();..    
6290: 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53  protected void S
62a0: 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  etHandle(IntPtr 
62b0: 76 61 6c 75 65 29 0a 20 20 20 20 7b 0a 20 20 20  value).    {.   
62c0: 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75     handle = valu
62d0: 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75  e;.    }..    pu
62e0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e  blic void SetHan
62f0: 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0a 20  dleAsInvalid(). 
6300: 20 20 20 7b 0a 20 20 20 20 20 20 5f 69 73 43 6c     {.      _isCl
6310: 6f 73 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20  osed = true;.   
6320: 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
6330: 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0a 20 20  nalize(this);.  
6340: 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20    }..    public 
6350: 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0a 20 20  bool IsClosed.  
6360: 20 20 7b 0a 20 20 20 20 20 20 67 65 74 20 7b 20    {.      get { 
6370: 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
6380: 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70  ; }.    }..    p
6390: 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 62  ublic abstract b
63a0: 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0a 20 20  ool IsInvalid.  
63b0: 20 20 7b 0a 20 20 20 20 20 20 67 65 74 3b 0a 20    {.      get;. 
63c0: 20 20 20 7d 0a 0a 20 20 7d 0a 0a 23 65 6e 64 69     }..  }..#endi
63d0: 66 0a 0a 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20  f..  // Handles 
63e0: 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61  the unmanaged da
63f0: 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20  tabase pointer, 
6400: 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e  and provides fin
6410: 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
6420: 74 20 66 6f 72 20 69 74 2e 0a 20 20 69 6e 74 65  t for it..  inte
6430: 72 6e 61 6c 20 63 6c 61 73 73 20 53 51 4c 69 74  rnal class SQLit
6440: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
6450: 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
6460: 6c 65 0a 20 20 7b 0a 20 20 20 20 70 75 62 6c 69  le.  {.    publi
6470: 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
6480: 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
6490: 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
64a0: 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0a 20 20 20  onHandle db).   
64b0: 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
64c0: 64 62 2e 68 61 6e 64 6c 65 3b 0a 20 20 20 20 7d  db.handle;.    }
64d0: 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
64e0: 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
64f0: 72 61 74 6f 72 20 53 51 4c 69 74 65 43 6f 6e 6e  rator SQLiteConn
6500: 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
6510: 50 74 72 20 64 62 29 0a 20 20 20 20 7b 0a 20 20  Ptr db).    {.  
6520: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
6530: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
6540: 61 6e 64 6c 65 28 64 62 29 3b 0a 20 20 20 20 7d  andle(db);.    }
6550: 0a 0a 20 20 20 20 70 72 69 76 61 74 65 20 53 51  ..    private SQ
6560: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
6570: 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 29 0a  ndle(IntPtr db).
6580: 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0a 20        : this(). 
6590: 20 20 20 7b 0a 20 20 20 20 20 20 53 65 74 48 61     {.      SetHa
65a0: 6e 64 6c 65 28 64 62 29 3b 0a 20 20 20 20 7d 0a  ndle(db);.    }.
65b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
65c0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
65d0: 6e 64 6c 65 28 29 0a 20 20 20 20 20 20 3a 20 62  ndle().      : b
65e0: 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
65f0: 0a 20 20 20 20 7b 0a 20 20 20 20 7d 0a 0a 20 20  .    {.    }..  
6600: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
6610: 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
6620: 65 48 61 6e 64 6c 65 28 29 0a 20 20 20 20 7b 0a  eHandle().    {.
6630: 20 20 20 20 20 20 74 72 79 0a 20 20 20 20 20 20        try.      
6640: 7b 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  {.        SQLite
6650: 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
6660: 74 69 6f 6e 28 74 68 69 73 29 3b 0a 20 20 20 20  tion(this);.    
6670: 20 20 7d 0a 20 20 20 20 20 20 63 61 74 63 68 20    }.      catch 
6680: 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
6690: 29 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20  ).      {.      
66a0: 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 74  }.      return t
66b0: 72 75 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  rue;.    }..    
66c0: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
66d0: 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0a 20  bool IsInvalid. 
66e0: 20 20 20 7b 0a 20 20 20 20 20 20 67 65 74 20 7b     {.      get {
66f0: 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
6700: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
6710: 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20   }.    }.  }..  
6720: 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
6730: 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
6740: 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
6750: 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73  QLite statements
6760: 2e 0a 20 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61  ..  internal cla
6770: 73 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ss SQLiteStateme
6780: 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  ntHandle : Criti
6790: 63 61 6c 48 61 6e 64 6c 65 0a 20 20 7b 0a 20 20  calHandle.  {.  
67a0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
67b0: 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
67c0: 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53  r IntPtr(SQLiteS
67d0: 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73  tatementHandle s
67e0: 74 6d 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  tmt).    {.     
67f0: 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
6800: 64 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  dle;.    }..    
6810: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
6820: 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
6830: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
6840: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
6850: 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 72  t).    {.      r
6860: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
6870: 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
6880: 73 74 6d 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  stmt);.    }..  
6890: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
68a0: 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
68b0: 49 6e 74 50 74 72 20 73 74 6d 74 29 0a 20 20 20  IntPtr stmt).   
68c0: 20 20 20 3a 20 74 68 69 73 28 29 0a 20 20 20 20     : this().    
68d0: 7b 0a 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c  {.      SetHandl
68e0: 65 28 73 74 6d 74 29 3b 0a 20 20 20 20 7d 0a 0a  e(stmt);.    }..
68f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
6900: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
6910: 6c 65 28 29 0a 20 20 20 20 20 20 3a 20 62 61 73  le().      : bas
6920: 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0a 20  e(IntPtr.Zero). 
6930: 20 20 20 7b 0a 20 20 20 20 7d 0a 0a 20 20 20 20     {.    }..    
6940: 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
6950: 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
6960: 61 6e 64 6c 65 28 29 0a 20 20 20 20 7b 0a 20 20  andle().    {.  
6970: 20 20 20 20 74 72 79 0a 20 20 20 20 20 20 7b 0a      try.      {.
6980: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
6990: 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
69a0: 6d 65 6e 74 28 74 68 69 73 29 3b 0a 20 20 20 20  ment(this);.    
69b0: 20 20 7d 0a 20 20 20 20 20 20 63 61 74 63 68 20    }.      catch 
69c0: 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
69d0: 29 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20  ).      {.      
69e0: 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 74  }.      return t
69f0: 72 75 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  rue;.    }..    
6a00: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
6a10: 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0a 20  bool IsInvalid. 
6a20: 20 20 20 7b 0a 20 20 20 20 20 20 67 65 74 20 7b     {.      get {
6a30: 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
6a40: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
6a50: 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 0a      }.    }.  }.}.