System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1d2a5b9a71cdbcd871763db6a7afa7458113bf2d:


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 36 32 2e 44 4c 4c 22 3b 0a 23 65  rop.062.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 23 65  ntPtr stmt);..#e
12d0: 6e 64 69 66 0a 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
12e0: 67 69 6f 6e 0a 0a 20 20 20 20 2f 2f 20 54 68 65  gion..    // The
12f0: 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63 61   standard api ca
1300: 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f  ll equivalents o
1310: 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65  f the above inte
1320: 72 6f 70 20 63 61 6c 6c 73 0a 20 20 20 20 23 72  rop calls.    #r
1330: 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76  egion standard v
1340: 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72  ersions of inter
1350: 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 23 69  op functions..#i
1360: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
1370: 44 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  D.#if !PLATFORM_
1380: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1390: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13d0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
13e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13f0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
1400: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
1410: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1420: 74 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  t sqlite3_close(
1430: 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66  IntPtr db);..#if
1440: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1450: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
1460: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1470: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1480: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1490: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14a0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
14b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14c0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
14d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14e0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
14f0: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
1500: 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
1510: 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20  byte[] strName, 
1520: 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e  int nArgs, int n
1530: 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
1540: 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  ser, SQLiteCallb
1550: 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65  ack func, SQLite
1560: 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20  Callback fstep, 
1570: 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62  SQLiteFinalCallb
1580: 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0a 0a 23 69  ack ffinal);..#i
1590: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15a0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
15b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15f0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
1600: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1610: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
1620: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1630: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1640: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49  lite3_finalize(I
1650: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69  ntPtr stmt);..#i
1660: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1670: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
1680: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1690: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16c0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
16d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16e0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
16f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1700: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1710: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79  lite3_open_v2(by
1720: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
1730: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62  e, out IntPtr db
1740: 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 49 6e 74  , int flags, Int
1750: 50 74 72 20 76 66 73 29 3b 0a 0a 23 69 66 20 21  Ptr vfs);..#if !
1760: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1770: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
1780: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1790: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17c0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
17d0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0a 23 65  Set.Unicode)].#e
17e0: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
17f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1800: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1810: 2e 55 6e 69 63 6f 64 65 29 5d 0a 23 65 6e 64 69  .Unicode)].#endi
1820: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
1830: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1840: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
1850: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
1860: 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b   out IntPtr db);
1870: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1880: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1890: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18d0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
18e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18f0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
1900: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
1910: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1920: 74 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28  t sqlite3_reset(
1930: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23  IntPtr stmt);..#
1940: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1950: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
1960: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1970: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1980: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1990: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19a0: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
19b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19c0: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
19d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19e0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19f0: 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
1a00: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
1a10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1a20: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
1a30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a40: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1a50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a60: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a70: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1a90: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1aa0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ab0: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1ac0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ad0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ae0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
1af0: 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  se_name(IntPtr s
1b00: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1b10: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b40: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b70: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
1b80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b90: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
1ba0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
1bb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1bc0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1bd0: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
1be0: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1bf0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
1c00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
1c20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c30: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c40: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c60: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
1c70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c80: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
1c90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ca0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1cb0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1cc0: 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
1cd0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1ce0: 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
1cf0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d00: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
1d10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d40: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
1d50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d60: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
1d70: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
1d80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1d90: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1da0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
1db0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1dc0: 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50   index);..#if !P
1dd0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1de0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
1df0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e00: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e10: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e20: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e30: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
1e40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e50: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
1e60: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e70: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1e80: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
1e90: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1ea0: 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21  t index);..#if !
1eb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ec0: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
1ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ee0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ef0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f10: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
1f20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f30: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
1f40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f50: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1f60: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
1f70: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1f80: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
1f90: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1fa0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
1fb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fc0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1fd0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fe0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ff0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
2000: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2010: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
2020: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2030: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
2040: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
2050: 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50  origin_name(IntP
2060: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
2070: 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ex);..#if !PLATF
2080: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2090: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
20a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20c0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20d0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
20e0: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
20f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2100: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
2110: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2120: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
2130: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
2140: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
2150: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a  t, int index);..
2160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
2180: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2190: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21b0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21c0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
21d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21e0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
21f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2200: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
2210: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
2220: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74  n_table_name(Int
2230: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
2240: 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  dex);..#if !PLAT
2250: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2260: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
2270: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
2280: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
2290: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22a0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
22b0: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
22c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22d0: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
22e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22f0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
2300: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
2310: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
2320: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a  t, int index);..
2330: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2340: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
2350: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2360: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
2370: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
2380: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2390: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
23a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23b0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
23c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
23e0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
23f0: 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74  n_text(IntPtr st
2400: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a  mt, int index);.
2410: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2420: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
2430: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2440: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
2450: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
2460: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2470: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
2480: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2490: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
24a0: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
24b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
24c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
24d0: 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  mn_text16(IntPtr
24e0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
24f0: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
2500: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2510: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
2520: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
2530: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
2540: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
2550: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
2560: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
2570: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
2580: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
2590: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25a0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
25b0: 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29  rrmsg(IntPtr db)
25c0: 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
25d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25e0: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
25f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
2600: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
2610: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
2620: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
2630: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
2640: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
2650: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
2660: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
2670: 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
2680: 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  re(IntPtr db, In
2690: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
26a0: 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74  Bytes, out IntPt
26b0: 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50  r stmt, out IntP
26c0: 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0a 0a  tr ptrRemain);..
26d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
26f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2700: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
2710: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
2720: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2730: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
2740: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2750: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
2760: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2770: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
2780: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
2790: 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e  lumn_metadata(In
27a0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
27b0: 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
27c0: 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
27d0: 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  olName, out IntP
27e0: 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
27f0: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f  out IntPtr ptrCo
2800: 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e  llSeq, out int n
2810: 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20  otNull, out int 
2820: 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20  primaryKey, out 
2830: 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0a 0a 23  int autoInc);..#
2840: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2850: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
2860: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2870: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
2880: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
2890: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
28a0: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
28b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28c0: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
28d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
28e0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
28f0: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
2900: 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0a  text(IntPtr p);.
2910: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2920: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
2930: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2940: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
2950: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
2960: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2970: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
2980: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2990: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
29a0: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
29b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
29c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
29d0: 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  e_text16(IntPtr 
29e0: 70 29 3b 0a 23 65 6e 64 69 66 0a 0a 20 20 20 20  p);.#endif..    
29f0: 23 65 6e 64 72 65 67 69 6f 6e 0a 0a 20 20 20 20  #endregion..    
2a00: 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  // These functio
2a10: 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e  ns are custom an
2a20: 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61  d have no equiva
2a30: 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69  lent standard li
2a40: 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0a 20 20  brary method..  
2a50: 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d    // All of them
2a60: 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61   are "nice to ha
2a70: 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63  ves" and not nec
2a80: 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74  essarily "need t
2a90: 6f 20 68 61 76 65 73 22 2e 0a 20 20 20 20 23 72  o haves"..    #r
2aa0: 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c  egion no equival
2ab0: 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74  ent standard met
2ac0: 68 6f 64 0a 0a 23 69 66 20 21 53 51 4c 49 54 45  hod..#if !SQLITE
2ad0: 5f 53 54 41 4e 44 41 52 44 0a 20 20 20 20 5b 44  _STANDARD.    [D
2ae0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2af0: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
2b00: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2b10: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
2b20: 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 28  context_collseq(
2b30: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
2b40: 6f 75 74 20 69 6e 74 20 74 79 70 65 2c 20 6f 75  out int type, ou
2b50: 74 20 69 6e 74 20 65 6e 63 2c 20 6f 75 74 20 69  t int enc, out i
2b60: 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44  nt len);..    [D
2b70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2b80: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
2b90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ba0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
2bb0: 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65  text_collcompare
2bc0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
2bd0: 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20   byte[] p1, int 
2be0: 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32  p1len, byte[] p2
2bf0: 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0a 0a 20  , int p2len);.. 
2c00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2c10: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69  LITE_DLL)].    i
2c20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2c30: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
2c40: 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 28 49  3_cursor_rowid(I
2c50: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
2c60: 63 75 72 73 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67  cursor, out long
2c70: 20 72 6f 77 69 64 29 3b 0a 0a 20 20 20 20 5b 44   rowid);..    [D
2c80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2c90: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
2ca0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2cb0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e 64   int sqlite3_ind
2cc0: 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69  ex_column_info_i
2cd0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
2ce0: 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67  , byte[] catalog
2cf0: 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61  , byte[] IndexNa
2d00: 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d  me, byte[] Colum
2d10: 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e 74 20 73  nName, out int s
2d20: 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74 20 69 6e  ortOrder, out in
2d30: 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75 74 20 49  t onError, out I
2d40: 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c  ntPtr Collation,
2d50: 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e   out int colllen
2d60: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
2d70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2d80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2d90: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
2da0: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c  sqlite3_resetall
2db0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
2dc0: 64 62 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  db);..    [DllIm
2dd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2de0: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
2df0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
2e00: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
2e10: 75 72 73 6f 72 28 49 6e 74 50 74 72 20 73 74 6d  ursor(IntPtr stm
2e20: 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74  t, int db, int t
2e30: 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0a 23  ableRootPage);.#
2e40: 65 6e 64 69 66 0a 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
2e50: 65 67 69 6f 6e 0a 0a 20 20 20 20 2f 2f 20 54 68  egion..    // Th
2e60: 65 73 65 20 61 72 65 20 6f 62 73 6f 6c 65 74 65  ese are obsolete
2e70: 20 61 6e 64 20 77 69 6c 6c 20 62 65 20 72 65 6d   and will be rem
2e80: 6f 76 65 64 20 69 6e 20 74 68 65 20 66 75 74 75  oved in the futu
2e90: 72 65 20 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  re .    #region 
2ea0: 77 69 6e 64 6f 77 73 20 6e 74 66 73 20 66 69 6c  windows ntfs fil
2eb0: 65 73 79 73 74 65 6d 20 6f 6e 6c 79 0a 0a 23 69  esystem only..#i
2ec0: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
2ed0: 52 44 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RD.    [DllImpor
2ee0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
2ef0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
2f00: 55 6e 69 63 6f 64 65 2c 20 53 65 74 4c 61 73 74  Unicode, SetLast
2f10: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0a 20  Error = true)]. 
2f20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2f30: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
2f40: 6c 69 74 65 33 5f 63 6f 6d 70 72 65 73 73 66 69  lite3_compressfi
2f50: 6c 65 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  le(string fileNa
2f60: 6d 65 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  me);..    [DllIm
2f70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
2f80: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
2f90: 65 74 2e 55 6e 69 63 6f 64 65 2c 20 53 65 74 4c  et.Unicode, SetL
2fa0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
2fb0: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
2fc0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
2fd0: 20 73 71 6c 69 74 65 33 5f 64 65 63 6f 6d 70 72   sqlite3_decompr
2fe0: 65 73 73 66 69 6c 65 28 73 74 72 69 6e 67 20 66  essfile(string f
2ff0: 69 6c 65 4e 61 6d 65 29 3b 0a 23 65 6e 64 69 66  ileName);.#endif
3000: 0a 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
3010: 0a 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72  ..    // Standar
3020: 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62  d API calls glob
3030: 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f  al across versio
3040: 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 61  ns.  There are a
3050: 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f   few instances o
3060: 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0a  f interop calls.
3070: 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64      // scattered
3080: 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68   in here, but th
3090: 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69  ey are only acti
30a0: 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d  ve when PLATFORM
30b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
30c0: 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0a 20  K is declared.. 
30d0: 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
30e0: 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
30f0: 61 6c 6c 73 0a 0a 23 69 66 20 21 50 4c 41 54 46  alls..#if !PLATF
3100: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
3110: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
3120: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
3130: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3140: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3150: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
3160: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
3170: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
3180: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
3190: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
31a0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
31b0: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0a 0a  _libversion();..
31c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
31d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
31e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
31f0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
3200: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
3210: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
3220: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
3230: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3240: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
3250: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
3260: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
3270: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
3280: 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a  pt(IntPtr db);..
3290: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
32a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
32b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
32c0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
32d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
32e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
32f0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
3300: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3310: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
3320: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
3330: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
3340: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
3350: 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66  IntPtr db);..#if
3360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3370: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
3380: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3390: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
33a0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
33b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
33c0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
33d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
33e0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
33f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3400: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
3410: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
3420: 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  t(IntPtr db, int
3430: 20 6d 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54   ms);..#if !PLAT
3440: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
3450: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
3460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
3470: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
3480: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
3490: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
34a0: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
34b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
34c0: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
34d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
34e0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
34f0: 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ind_blob(IntPtr 
3500: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3510: 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   Byte[] value, i
3520: 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
3530: 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0a 0a 23   nTransient);..#
3540: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
3550: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
3560: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3570: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
3580: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
3590: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
35a0: 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72  decl)].    inter
35b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
35c0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
35d0: 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  nd_double(IntPtr
35e0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
35f0: 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
3600: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
3610: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3620: 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  )].    internal 
3630: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
3640: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  t sqlite3_bind_d
3650: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
3660: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
3670: 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
3680: 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69 66 0a   value);.#endif.
3690: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
36a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
36b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
36c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
36d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
36e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
36f0: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
3700: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3710: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
3720: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
3730: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
3740: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
3750: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
3760: 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
3770: 6c 75 65 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  lue);..#if !PLAT
3780: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
3790: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
37a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
37b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
37c0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
37d0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20  ention.Cdecl)]. 
37e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
37f0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
3800: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
3810: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
3820: 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
3830: 6c 75 65 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20  lue);.#else.    
3840: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3850: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
3860: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
3870: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
3880: 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
3890: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
38a0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
38b0: 6e 67 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69  ng value);.#endi
38c0: 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  f..#if !PLATFORM
38d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
38e0: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
38f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
3900: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
3910: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
3920: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
3930: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
3940: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
3950: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
3960: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
3970: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
3980: 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74  null(IntPtr stmt
3990: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23  , int index);..#
39a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
39b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
39c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
39d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
39e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
39f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
3a00: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
3a10: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3a20: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
3a30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3a40: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
3a50: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
3a60: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
3a70: 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20  t index, byte[] 
3a80: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
3a90: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
3aa0: 65 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ed);..#if !PLATF
3ab0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
3ac0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
3ad0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
3ae0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3af0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3b00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
3b10: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
3b20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
3b30: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
3b40: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
3b50: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
3b60: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
3b70: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
3b80: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3b90: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3ba0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
3bb0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
3bc0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
3bd0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3be0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
3bf0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3c00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
3c10: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
3c20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
3c30: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  t sqlite3_bind_p
3c40: 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49  arameter_index(I
3c50: 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65  ntPtr stmt, byte
3c60: 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0a 0a 23 69  [] strName);..#i
3c70: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3c80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
3c90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3ca0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
3cb0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
3cc0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
3cd0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
3ce0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3cf0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
3d00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
3d10: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
3d20: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
3d30: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
3d40: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3d50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3d60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
3d70: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
3d80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
3d90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3da0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
3db0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3dc0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
3dd0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
3de0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
3df0: 74 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  t sqlite3_step(I
3e00: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69  ntPtr stmt);..#i
3e10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3e20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
3e30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3e40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
3e50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
3e60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
3e70: 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  ecl)].    intern
3e80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
3e90: 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
3ea0: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
3eb0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
3ec0: 6e 64 65 78 29 3b 0a 23 65 6c 73 65 0a 20 20 20  ndex);.#else.   
3ed0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3ee0: 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74  TE_DLL)].    int
3ef0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3f00: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
3f10: 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69  _column_double_i
3f20: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
3f30: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
3f40: 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ut double value)
3f50: 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 21 50  ;.#endif..#if !P
3f60: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3f70: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
3f80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
3f90: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
3fa0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
3fb0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
3fc0: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
3fd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
3fe0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
3ff0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4000: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
4010: 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74  3_column_int(Int
4020: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
4030: 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  dex);..#if !PLAT
4040: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4050: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
4060: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
4070: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4080: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
4090: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20  ention.Cdecl)]. 
40a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
40b0: 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
40c0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
40d0: 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
40e0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 23 65 6c   int index);.#el
40f0: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
4100: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20  t(SQLITE_DLL)]. 
4110: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4120: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
4130: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
4140: 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
4150: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
4160: 65 78 2c 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c  ex, out long val
4170: 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66  ue);.#endif..#if
4180: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4190: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
41a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
41b0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
41c0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
41d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
41e0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
41f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4200: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
4210: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4220: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
4230: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
4240: 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  lob(IntPtr stmt,
4250: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
4260: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4270: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
4280: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4290: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
42a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
42b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
42c0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
42d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
42e0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
42f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4300: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
4310: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
4320: 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  es(IntPtr stmt, 
4330: 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66  int index);..#if
4340: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4350: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
4360: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4370: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
4380: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
4390: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
43a0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
43b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
43c0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
43d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
43e0: 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
43f0: 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
4400: 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
4410: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
4420: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
4430: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4440: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
4450: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
4460: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
4470: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
4480: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
4490: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
44a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
44b0: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
44c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
44d0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61  int sqlite3_crea
44e0: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74  te_collation(Int
44f0: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
4500: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70  trName, int nTyp
4510: 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
4520: 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f  , SQLiteCollatio
4530: 6e 20 66 75 6e 63 29 3b 0a 0a 23 69 66 20 21 50  n func);..#if !P
4540: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4550: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
4560: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4570: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
4580: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
4590: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
45a0: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
45b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
45c0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
45d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
45e0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
45f0: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
4600: 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
4610: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
4620: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4630: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
4640: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
4650: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
4660: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
4670: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
4680: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
4690: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
46a0: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
46b0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
46c0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
46d0: 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
46e0: 20 70 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46   p);..#if !PLATF
46f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4700: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
4710: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
4720: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4730: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
4740: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
4750: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
4760: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
4770: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
4780: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
4790: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
47a0: 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72  lue_bytes(IntPtr
47b0: 20 70 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46   p);..#if !PLATF
47c0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
47d0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
47e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
47f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4800: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
4810: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20  ntion.Cdecl)].  
4820: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4830: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
4840: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
4850: 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0a  uble(IntPtr p);.
4860: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
4870: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4880: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
4890: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
48a0: 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  d sqlite3_value_
48b0: 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
48c0: 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75  ntPtr p, out dou
48d0: 62 6c 65 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64  ble value);.#end
48e0: 69 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  if..#if !PLATFOR
48f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4900: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
4910: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
4920: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
4930: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
4940: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
4950: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
4960: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
4970: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
4980: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4990: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
49a0: 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b  e_int(IntPtr p);
49b0: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
49c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
49d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
49e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
49f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
4a00: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4a10: 6e 2e 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e  n.Cdecl)].    in
4a20: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4a30: 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
4a40: 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e  3_value_int64(In
4a50: 74 50 74 72 20 70 29 3b 0a 23 65 6c 73 65 0a 20  tPtr p);.#else. 
4a60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4a70: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69  LITE_DLL)].    i
4a80: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4a90: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
4aa0: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
4ab0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
4ac0: 20 6f 75 74 20 49 6e 74 36 34 20 76 61 6c 75 65   out Int64 value
4ad0: 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 21  );.#endif..#if !
4ae0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
4af0: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
4b00: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
4b10: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
4b20: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
4b30: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
4b40: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
4b50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4b60: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
4b70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4b80: 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
4b90: 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ity sqlite3_valu
4ba0: 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29  e_type(IntPtr p)
4bb0: 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
4bc0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4bd0: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
4be0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
4bf0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
4c00: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4c10: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
4c20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4c30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
4c40: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
4c50: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
4c60: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
4c70: 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63  lt_blob(IntPtr c
4c80: 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
4c90: 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
4ca0: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
4cb0: 65 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ed);..#if !PLATF
4cc0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4cd0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
4ce0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
4cf0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4d00: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
4d10: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20  ntion.Cdecl)].  
4d20: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4d30: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
4d40: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
4d50: 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ble(IntPtr conte
4d60: 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  xt, double value
4d70: 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  );.#else.    [Dl
4d80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4d90: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
4da0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4db0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
4dc0: 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
4dd0: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
4de0: 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
4df0: 6c 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69  lue);.#endif..#i
4e00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4e10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
4e20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4e30: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
4e40: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
4e50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
4e60: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
4e70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4e80: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
4e90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4ea0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
4eb0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
4ec0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
4ed0: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
4ee0: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0a 0a 23  r, int nLen);..#
4ef0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4f00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
4f10: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
4f20: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
4f30: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
4f40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
4f50: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
4f60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4f70: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
4f80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4f90: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
4fa0: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
4fb0: 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
4fc0: 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0a 0a  t, int value);..
4fd0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4fe0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
4ff0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5000: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5010: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5020: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5030: 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65  Cdecl)].    inte
5040: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5050: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
5060: 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74  result_int64(Int
5070: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e  Ptr context, lon
5080: 67 20 76 61 6c 75 65 29 3b 0a 23 65 6c 73 65 0a  g value);.#else.
5090: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
50a0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
50b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
50c0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
50d0: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
50e0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
50f0: 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
5100: 36 34 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69  64 value);.#endi
5110: 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  f..#if !PLATFORM
5120: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
5130: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
5140: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
5150: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5160: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5170: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
5180: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5190: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
51a0: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
51b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
51c0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
51d0: 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
51e0: 6f 6e 74 65 78 74 29 3b 0a 0a 23 69 66 20 21 50  ontext);..#if !P
51f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5200: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
5210: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5220: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
5230: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
5240: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
5250: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
5260: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5270: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
5280: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5290: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
52a0: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49  e3_result_text(I
52b0: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
52c0: 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
52d0: 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
52e0: 52 65 73 65 72 76 65 64 29 3b 0a 0a 23 69 66 20  Reserved);..#if 
52f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5300: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
5310: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5320: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
5330: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
5340: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
5350: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
5360: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5370: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
5380: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5390: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
53a0: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
53b0: 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20  _context(IntPtr 
53c0: 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79  context, int nBy
53d0: 74 65 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54  tes);..#if !PLAT
53e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
53f0: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
5400: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5410: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5420: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5430: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
5440: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
5450: 55 6e 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a  Unicode)].#else.
5460: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5470: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
5480: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
5490: 63 6f 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20  code)].#endif.  
54a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
54b0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
54c0: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
54d0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
54e0: 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
54f0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
5500: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
5510: 65 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ed);..#if !PLATF
5520: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5530: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
5540: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5550: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5560: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5570: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
5580: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
5590: 6e 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a 20  nicode)].#else. 
55a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
55b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
55c0: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
55d0: 6f 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  ode)].#endif.   
55e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
55f0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
5600: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
5610: 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  r16(IntPtr conte
5620: 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
5630: 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0a 0a  me, int nLen);..
5640: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
5650: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
5660: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5670: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5680: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5690: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
56a0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
56b0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
56c0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
56d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
56e0: 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
56f0: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0a  arSet.Unicode)].
5700: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
5710: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5720: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
5730: 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74  esult_text16(Int
5740: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
5750: 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
5760: 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
5770: 52 65 73 65 72 76 65 64 29 3b 0a 0a 23 69 66 20  Reserved);..#if 
5780: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5790: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
57a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
57b0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
57c0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
57d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
57e0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
57f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5800: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
5810: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5820: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
5830: 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
5840: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
5850: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0a 0a 23 69 66  nt keylen);..#if
5860: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
5870: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
5880: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5890: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
58a0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
58b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
58c0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
58d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
58e0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
58f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5900: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
5910: 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74  ite3_rekey(IntPt
5920: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
5930: 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0a 0a  , int keylen);..
5940: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
5950: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
5960: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5970: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5980: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5990: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
59a0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
59b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
59c0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
59d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
59e0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
59f0: 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74  tr sqlite3_updat
5a00: 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  e_hook(IntPtr db
5a10: 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61  , SQLiteUpdateCa
5a20: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
5a30: 50 74 72 20 70 76 55 73 65 72 29 3b 0a 0a 23 69  Ptr pvUser);..#i
5a40: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5a50: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
5a60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5a70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
5a80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5a90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
5aa0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
5ab0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5ac0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
5ad0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5ae0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
5af0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f   sqlite3_commit_
5b00: 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
5b10: 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c  SQLiteCommitCall
5b20: 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
5b30: 72 20 70 76 55 73 65 72 29 3b 0a 0a 23 69 66 20  r pvUser);..#if 
5b40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5b50: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
5b60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5b70: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
5b80: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
5b90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
5ba0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
5bb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5bc0: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
5bd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5be0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5bf0: 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
5c00: 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
5c10: 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
5c20: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
5c30: 50 74 72 20 70 76 55 73 65 72 29 3b 0a 0a 23 69  Ptr pvUser);..#i
5c40: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5c50: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
5c60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5c70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
5c80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5c90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
5ca0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
5cb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5cc0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
5cd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5ce0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
5cf0: 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
5d00: 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
5d10: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5d20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5d30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5d40: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
5d50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
5d60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5d70: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
5d80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5d90: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
5da0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
5db0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5dc0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78  tPtr sqlite3_nex
5dd0: 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62  t_stmt(IntPtr db
5de0: 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a  , IntPtr stmt);.
5df0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
5e00: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
5e10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e20: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
5e30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
5e40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5e50: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
5e60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5e70: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
5e80: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
5e90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
5ea0: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e   sqlite3_exec(In
5eb0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
5ec0: 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70  strSql, IntPtr p
5ed0: 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74  vCallback, IntPt
5ee0: 72 20 70 76 50 61 72 61 6d 2c 20 6f 75 74 20 49  r pvParam, out I
5ef0: 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0a 0a  ntPtr errMsg);..
5f00: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0a 20      #endregion. 
5f10: 20 7d 0a 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   }..#if PLATFORM
5f20: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
5f30: 4b 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73  K.  internal abs
5f40: 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69 74  tract class Crit
5f50: 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69  icalHandle : IDi
5f60: 73 70 6f 73 61 62 6c 65 0a 20 20 7b 0a 20 20 20  sposable.  {.   
5f70: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69   private bool _i
5f80: 73 43 6c 6f 73 65 64 3b 0a 20 20 20 20 70 72 6f  sClosed;.    pro
5f90: 74 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61  tected IntPtr ha
5fa0: 6e 64 6c 65 3b 0a 20 20 20 20 0a 20 20 20 20 70  ndle;.    .    p
5fb0: 72 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61  rotected Critica
5fc0: 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69  lHandle(IntPtr i
5fd0: 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
5fe0: 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 68  e).    {.      h
5ff0: 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48  andle = invalidH
6000: 61 6e 64 6c 65 56 61 6c 75 65 3b 0a 20 20 20 20  andleValue;.    
6010: 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
6020: 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  lse;.    }..    
6030: 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28  ~CriticalHandle(
6040: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 44 69  ).    {.      Di
6050: 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0a 20 20  spose(false);.  
6060: 20 20 7d 0a 0a 20 20 20 20 70 72 69 76 61 74 65    }..    private
6070: 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0a   void Cleanup().
6080: 20 20 20 20 7b 0a 20 20 20 20 20 20 69 66 20 28      {.      if (
6090: 21 49 73 43 6c 6f 73 65 64 29 0a 20 20 20 20 20  !IsClosed).     
60a0: 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   {.        this.
60b0: 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
60c0: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49  ;.        if (!I
60d0: 73 49 6e 76 61 6c 69 64 29 0a 20 20 20 20 20 20  sInvalid).      
60e0: 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 52 65    {.          Re
60f0: 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0a 20  leaseHandle();. 
6100: 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
6110: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
6120: 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  s);.        }.  
6130: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
6140: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
6150: 73 65 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  se().    {.     
6160: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0a   Dispose(true);.
6170: 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69      }..    publi
6180: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
6190: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 44 69 73  .    {.      Dis
61a0: 70 6f 73 65 28 74 72 75 65 29 3b 0a 20 20 20 20  pose(true);.    
61b0: 7d 0a 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  }..    protected
61c0: 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69   virtual void Di
61d0: 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
61e0: 73 69 6e 67 29 0a 20 20 20 20 7b 0a 20 20 20 20  sing).    {.    
61f0: 20 20 43 6c 65 61 6e 75 70 28 29 3b 0a 20 20 20    Cleanup();.   
6200: 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65 63 74 65   }..    protecte
6210: 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  d abstract bool 
6220: 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b  ReleaseHandle();
6230: 0a 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
6240: 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
6250: 6e 74 50 74 72 20 76 61 6c 75 65 29 0a 20 20 20  ntPtr value).   
6260: 20 7b 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20   {.      handle 
6270: 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 0a  = value;.    }..
6280: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
6290: 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
62a0: 69 64 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  id().    {.     
62b0: 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75   _isClosed = tru
62c0: 65 3b 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70  e;.      GC.Supp
62d0: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
62e0: 73 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70  s);.    }..    p
62f0: 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f  ublic bool IsClo
6300: 73 65 64 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  sed.    {.      
6310: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73  get { return _is
6320: 43 6c 6f 73 65 64 3b 20 7d 0a 20 20 20 20 7d 0a  Closed; }.    }.
6330: 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
6340: 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
6350: 6c 69 64 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  lid.    {.      
6360: 67 65 74 3b 0a 20 20 20 20 7d 0a 0a 20 20 7d 0a  get;.    }..  }.
6370: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2f 20 48 61  .#endif..  // Ha
6380: 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61  ndles the unmana
6390: 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69  ged database poi
63a0: 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64  nter, and provid
63b0: 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
63c0: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0a  support for it..
63d0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61 73 73    internal class
63e0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
63f0: 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
6400: 61 6c 48 61 6e 64 6c 65 0a 20 20 7b 0a 20 20 20  alHandle.  {.   
6410: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
6420: 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
6430: 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f   IntPtr(SQLiteCo
6440: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64  nnectionHandle d
6450: 62 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 72  b).    {.      r
6460: 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
6470: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c  .    }..    publ
6480: 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
6490: 69 74 20 6f 70 65 72 61 74 6f 72 20 53 51 4c 69  it operator SQLi
64a0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
64b0: 6c 65 28 49 6e 74 50 74 72 20 64 62 29 0a 20 20  le(IntPtr db).  
64c0: 20 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e    {.      return
64d0: 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65   new SQLiteConne
64e0: 63 74 69 6f 6e 48 61 6e 64 6c 65 28 64 62 29 3b  ctionHandle(db);
64f0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 69 76  .    }..    priv
6500: 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
6510: 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74  tionHandle(IntPt
6520: 72 20 64 62 29 0a 20 20 20 20 20 20 3a 20 74 68  r db).      : th
6530: 69 73 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  is().    {.     
6540: 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0a   SetHandle(db);.
6550: 20 20 20 20 7d 0a 0a 20 20 20 20 69 6e 74 65 72      }..    inter
6560: 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  nal SQLiteConnec
6570: 74 69 6f 6e 48 61 6e 64 6c 65 28 29 0a 20 20 20  tionHandle().   
6580: 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
6590: 2e 5a 65 72 6f 29 0a 20 20 20 20 7b 0a 20 20 20  .Zero).    {.   
65a0: 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65 63 74 65   }..    protecte
65b0: 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
65c0: 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0a  ReleaseHandle().
65d0: 20 20 20 20 7b 0a 20 20 20 20 20 20 74 72 79 0a      {.      try.
65e0: 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20        {.        
65f0: 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
6600: 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 29  Connection(this)
6610: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
6620: 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
6630: 65 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 7b 0a  eption).      {.
6640: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 65        }.      re
6650: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 7d  turn true;.    }
6660: 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65  ..    public ove
6670: 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
6680: 61 6c 69 64 0a 20 20 20 20 7b 0a 20 20 20 20 20  alid.    {.     
6690: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 28 68   get { return (h
66a0: 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
66b0: 5a 65 72 6f 29 3b 20 7d 0a 20 20 20 20 7d 0a 20  Zero); }.    }. 
66c0: 20 7d 0a 0a 20 20 2f 2f 20 50 72 6f 76 69 64 65   }..  // Provide
66d0: 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73  s finalization s
66e0: 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e  upport for unman
66f0: 61 67 65 64 20 53 51 4c 69 74 65 20 73 74 61 74  aged SQLite stat
6700: 65 6d 65 6e 74 73 2e 0a 20 20 69 6e 74 65 72 6e  ements..  intern
6710: 61 6c 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  al class SQLiteS
6720: 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
6730: 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0a   CriticalHandle.
6740: 20 20 7b 0a 20 20 20 20 70 75 62 6c 69 63 20 73    {.    public s
6750: 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
6760: 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
6770: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
6780: 6e 64 6c 65 20 73 74 6d 74 29 0a 20 20 20 20 7b  ndle stmt).    {
6790: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74  .      return st
67a0: 6d 74 2e 68 61 6e 64 6c 65 3b 0a 20 20 20 20 7d  mt.handle;.    }
67b0: 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
67c0: 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
67d0: 72 61 74 6f 72 20 53 51 4c 69 74 65 53 74 61 74  rator SQLiteStat
67e0: 65 6d 65 6e 74 48 61 6e 64 6c 65 28 49 6e 74 50  ementHandle(IntP
67f0: 74 72 20 73 74 6d 74 29 0a 20 20 20 20 7b 0a 20  tr stmt).    {. 
6800: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
6810: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
6820: 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0a 20 20 20  andle(stmt);.   
6830: 20 7d 0a 0a 20 20 20 20 70 72 69 76 61 74 65 20   }..    private 
6840: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
6850: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
6860: 74 29 0a 20 20 20 20 20 20 3a 20 74 68 69 73 28  t).      : this(
6870: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 53 65  ).    {.      Se
6880: 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0a 20  tHandle(stmt);. 
6890: 20 20 20 7d 0a 0a 20 20 20 20 69 6e 74 65 72 6e     }..    intern
68a0: 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
68b0: 6e 74 48 61 6e 64 6c 65 28 29 0a 20 20 20 20 20  ntHandle().     
68c0: 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
68d0: 65 72 6f 29 0a 20 20 20 20 7b 0a 20 20 20 20 7d  ero).    {.    }
68e0: 0a 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
68f0: 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
6900: 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0a 20 20  leaseHandle().  
6910: 20 20 7b 0a 20 20 20 20 20 20 74 72 79 0a 20 20    {.      try.  
6920: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 53 51      {.        SQ
6930: 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
6940: 65 53 74 61 74 65 6d 65 6e 74 28 74 68 69 73 29  eStatement(this)
6950: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
6960: 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
6970: 65 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 7b 0a  eption).      {.
6980: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 65        }.      re
6990: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 7d  turn true;.    }
69a0: 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65  ..    public ove
69b0: 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
69c0: 61 6c 69 64 0a 20 20 20 20 7b 0a 20 20 20 20 20  alid.    {.     
69d0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 28 68   get { return (h
69e0: 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
69f0: 5a 65 72 6f 29 3b 20 7d 0a 20 20 20 20 7d 0a 20  Zero); }.    }. 
6a00: 20 7d 0a 7d 0a                                    }.}.