System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e5bce7a1483d86d5a6450b15574cc77fcbe473e0:


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 20 26 26 20 21 44 45 42 55 47 0a 20 20 5b  RK && !DEBUG.  [
01c0: 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65  SuppressUnmanage
01d0: 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0a 23  dCodeSecurity].#
01e0: 65 6e 64 69 66 0a 20 20 69 6e 74 65 72 6e 61 6c  endif.  internal
01f0: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
0200: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
0210: 73 0a 20 20 7b 0a 23 69 66 20 21 53 51 4c 49 54  s.  {.#if !SQLIT
0220: 45 5f 53 54 41 4e 44 41 52 44 0a 0a 23 69 66 20  E_STANDARD..#if 
0230: 21 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c  !USE_INTEROP_DLL
0240: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0250: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0260: 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e  .    private con
0270: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
0280: 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44  _DLL = "System.D
0290: 61 74 61 2e 53 51 4c 69 74 65 2e 44 4c 4c 22 3b  ata.SQLite.DLL";
02a0: 0a 23 65 6c 73 65 0a 20 20 20 20 69 6e 74 65 72  .#else.    inter
02b0: 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
02c0: 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53   SQLITE_DLL = "S
02d0: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 30 36  QLite.Interop.06
02e0: 37 2e 44 4c 4c 22 3b 0a 23 65 6e 64 69 66 20 2f  7.DLL";.#endif /
02f0: 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  / PLATFORM_COMPA
0300: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 0a 23 65 6c  CTFRAMEWORK..#el
0310: 73 65 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  se.    private c
0320: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
0330: 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
0340: 2e 49 6e 74 65 72 6f 70 2e 44 4c 4c 22 3b 0a 23  .Interop.DLL";.#
0350: 65 6e 64 69 66 20 2f 2f 20 55 53 45 5f 49 4e 54  endif // USE_INT
0360: 45 52 4f 50 5f 44 4c 4c 0a 0a 23 65 6c 73 65 0a  EROP_DLL..#else.
0370: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0380: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
0390: 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b  DLL = "sqlite3";
03a0: 0a 23 65 6e 64 69 66 0a 0a 20 20 20 20 2f 2f 20  .#endif..    // 
03b0: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65  This section use
03c0: 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20  s interop calls 
03d0: 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20  that also fetch 
03e0: 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f  text length to o
03f0: 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69  ptimize conversi
0400: 6f 6e 2e 20 20 0a 20 20 20 20 2f 2f 20 57 68 65  on.  .    // Whe
0410: 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e  n using the stan
0420: 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e  dard dll, we can
0430: 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63   replace these c
0440: 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c  alls with normal
0450: 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e   sqlite calls an
0460: 64 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64  d do unoptimized
0470: 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73   conversions ins
0480: 74 65 61 64 20 61 66 74 65 72 77 61 72 64 73 0a  tead afterwards.
0490: 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
04a0: 72 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65  rop added textle
04b0: 6e 67 74 68 20 63 61 6c 6c 73 0a 0a 23 69 66 20  ngth calls..#if 
04c0: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
04d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
04e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20  SQLITE_DLL)].   
04f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0500: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
0510: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
0520: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
0530: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
0540: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
0550: 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44  nt len);..    [D
0560: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
0570: 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  DLL)].    intern
0580: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
0590: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
05a0: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
05b0: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
05c0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
05d0: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
05e0: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
05f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
0600: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
0610: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
0620: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
0630: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
0640: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
0650: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
0660: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a   out int len);..
0670: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
0680: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
0690: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
06a0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
06b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
06c0: 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ltype_interop(In
06d0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
06e0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
06f0: 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  n);..    [DllImp
0700: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
0710: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
0720: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
0730: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
0740: 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74  n_decltype16_int
0750: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
0760: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
0770: 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20   int len);..    
0780: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
0790: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
07a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
07b0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
07c0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e  3_column_name_in
07d0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
07e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
07f0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a 20 20 20  t int len);..   
0800: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
0810: 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74  TE_DLL)].    int
0820: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
0830: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
0840: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
0850: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
0860: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
0870: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0a 0a   out int len);..
0880: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
0890: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
08a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
08b0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
08c0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
08d0: 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  gin_name_interop
08e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
08f0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
0900: 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c   len);..    [Dll
0910: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
0920: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
0930: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
0940: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
0950: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
0960: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
0970: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
0980: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
0990: 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
09a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20  (SQLITE_DLL)].  
09b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
09c0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
09d0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
09e0: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
09f0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
0a00: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
0a10: 74 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c  t len);..    [Dl
0a20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
0a30: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
0a40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
0a50: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
0a60: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
0a70: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
0a80: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
0a90: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
0aa0: 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
0ab0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20  (SQLITE_DLL)].  
0ac0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0ad0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
0ae0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
0af0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
0b00: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
0b10: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
0b20: 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ;..    [DllImpor
0b30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20  t(SQLITE_DLL)]. 
0b40: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
0b50: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
0b60: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
0b70: 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49  text16_interop(I
0b80: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
0b90: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
0ba0: 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  en);..    [DllIm
0bb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
0bc0: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
0bd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
0be0: 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
0bf0: 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
0c00: 72 20 64 62 2c 20 6f 75 74 20 69 6e 74 20 6c 65  r db, out int le
0c10: 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  n);..    [DllImp
0c20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
0c30: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
0c40: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
0c50: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
0c60: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
0c70: 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
0c80: 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20  int nBytes, out 
0c90: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74  IntPtr stmt, out
0ca0: 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
0cb0: 6e 2c 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d 61  n, out int nRema
0cc0: 69 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  in);..    [DllIm
0cd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
0ce0: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
0cf0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
0d00: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
0d10: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69  olumn_metadata_i
0d20: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
0d30: 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
0d40: 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
0d50: 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
0d60: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44   out IntPtr ptrD
0d70: 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74  ataType, out Int
0d80: 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20  Ptr ptrCollSeq, 
0d90: 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c  out int notNull,
0da0: 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79   out int primary
0db0: 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74  Key, out int aut
0dc0: 6f 49 6e 63 2c 20 6f 75 74 20 69 6e 74 20 64 74  oInc, out int dt
0dd0: 4c 65 6e 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c  Len, out int csL
0de0: 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d  en);..    [DllIm
0df0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
0e00: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
0e10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
0e20: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
0e30: 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  e_text_interop(I
0e40: 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74  ntPtr p, out int
0e50: 20 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c   len);..    [Dll
0e60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
0e70: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
0e80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
0e90: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
0ea0: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
0eb0: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74  op(IntPtr p, out
0ec0: 20 69 6e 74 20 6c 65 6e 29 3b 0a 23 65 6e 64 69   int len);.#endi
0ed0: 66 0a 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
0ee0: 6e 0a 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  n..    // These 
0ef0: 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
0f00: 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
0f10: 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
0f20: 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
0f30: 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
0f40: 74 20 74 6f 0a 20 20 20 20 2f 2f 20 67 65 74 20  t to.    // get 
0f50: 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
0f60: 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
0f70: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a  SQLite library..
0f80: 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
0f90: 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69  rop added functi
0fa0: 6f 6e 61 6c 69 74 79 0a 0a 23 69 66 20 21 53 51  onality..#if !SQ
0fb0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0a 20 20  LITE_STANDARD.  
0fc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
0fd0: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
0fe0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
0ff0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1000: 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49  _close_interop(I
1010: 6e 74 50 74 72 20 64 62 29 3b 0a 0a 20 20 20 20  ntPtr db);..    
1020: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1030: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
1040: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1050: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1060: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
1070: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1080: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1090: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
10a0: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
10b0: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
10c0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
10d0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
10e0: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
10f0: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
1100: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0a  t needCollSeq);.
1110: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1120: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20  SQLITE_DLL)].   
1130: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1140: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1150: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
1160: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1170: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
1180: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
1190: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11a0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
11b0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65  qlite3_open_inte
11c0: 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46  rop(byte[] utf8F
11d0: 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 66 6c 61  ilename, int fla
11e0: 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64  gs, out IntPtr d
11f0: 62 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  b);..    [DllImp
1200: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1210: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1220: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1230: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69  sqlite3_open16_i
1240: 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74  nterop(byte[] ut
1250: 66 38 46 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20  f8Filename, int 
1260: 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74  flags, out IntPt
1270: 72 20 64 62 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c  r db);..    [Dll
1280: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1290: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
12a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
12b0: 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  nt sqlite3_reset
12c0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
12d0: 73 74 6d 74 29 3b 0a 0a 23 65 6e 64 69 66 0a 0a  stmt);..#endif..
12e0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0a 0a      #endregion..
12f0: 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64      // The stand
1300: 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75  ard api call equ
1310: 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20  ivalents of the 
1320: 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61  above interop ca
1330: 6c 6c 73 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  lls.    #region 
1340: 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e  standard version
1350: 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e  s of interop fun
1360: 63 74 69 6f 6e 73 0a 0a 23 69 66 20 53 51 4c 49  ctions..#if SQLI
1370: 54 45 5f 53 54 41 4e 44 41 52 44 0a 23 69 66 20  TE_STANDARD.#if 
1380: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1390: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
13a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13b0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13c0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13e0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
13f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1400: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1410: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1420: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1430: 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  te3_close(IntPtr
1440: 20 64 62 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54   db);..#if !PLAT
1450: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1460: 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d  EWORK.    [DllIm
1470: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1480: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1490: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14a0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23  ention.Cdecl)].#
14b0: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
14c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14d0: 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65  .#endif.    inte
14e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14f0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1500: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
1510: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1520: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
1530: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
1540: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
1550: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
1560: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
1570: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
1580: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
1590: 69 6e 61 6c 29 3b 0a 0a 23 69 66 20 21 50 4c 41  inal);..#if !PLA
15a0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15b0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
15c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1600: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1610: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1620: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1630: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1640: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1650: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
1660: 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21 50 4c 41  stmt);..#if !PLA
1670: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1680: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1690: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16a0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16b0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16c0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
16d0: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
16e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16f0: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1700: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1710: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1720: 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
1730: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75 74  tf8Filename, out
1740: 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20   IntPtr db, int 
1750: 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76 66  flags, IntPtr vf
1760: 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  s);..#if !PLATFO
1770: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1780: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
1790: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17b0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17c0: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
17d0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
17e0: 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a 20 20  icode)].#else.  
17f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1800: 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1810: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1820: 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  de)].#endif.    
1830: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1840: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1850: 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
1860: 20 66 69 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49   fileName, out I
1870: 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66 20  ntPtr db);..#if 
1880: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1890: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
18a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18b0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18c0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18e0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
18f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1900: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1910: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1920: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1930: 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72  te3_reset(IntPtr
1940: 20 73 74 6d 74 29 3b 0a 0a 23 69 66 20 21 50 4c   stmt);..#if !PL
1950: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1960: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
1970: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1980: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1990: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19b0: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
19c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19d0: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
19e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a00: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1a10: 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
1a20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a30: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a40: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a60: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a90: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
1aa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ab0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
1ac0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
1ad0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ae0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1af0: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
1b00: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1b10: 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20  nt index);..#if 
1b20: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b30: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
1b40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b50: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b60: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b80: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
1b90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ba0: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
1bb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bc0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1bd0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
1be0: 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e  tabase_name16(In
1bf0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1c00: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
1c10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c20: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1c30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c40: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c50: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c60: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
1c70: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
1c80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c90: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
1ca0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cb0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1cc0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
1cd0: 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
1ce0: 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66  int index);..#if
1cf0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d00: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
1d10: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d20: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d30: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d50: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
1d60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d70: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
1d80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d90: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1da0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1db0: 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72  ecltype16(IntPtr
1dc0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1dd0: 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  );..#if !PLATFOR
1de0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1df0: 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  RK.    [DllImpor
1e00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73  ion.Cdecl)].#els
1e40: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
1e50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65  (SQLITE_DLL)].#e
1e60: 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61  ndif.    interna
1e70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e80: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1e90: 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  olumn_name(IntPt
1ea0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1eb0: 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  x);..#if !PLATFO
1ec0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ed0: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
1ee0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ef0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f00: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f10: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
1f20: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
1f30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
1f40: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
1f50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1f70: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
1f80: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1f90: 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41  ndex);..#if !PLA
1fa0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fb0: 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49  MEWORK.    [DllI
1fc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fd0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fe0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ff0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a  vention.Cdecl)].
2000: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
2010: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2020: 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74  ].#endif.    int
2030: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2040: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
2050: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
2060: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
2070: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a  t, int index);..
2080: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2090: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
20a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20e0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
20f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2100: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
2110: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2120: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
2130: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
2140: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28  n_origin_name16(
2150: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
2160: 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50   index);..#if !P
2170: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2180: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
2190: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21d0: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
21e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21f0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
2200: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2210: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
2220: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
2230: 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
2240: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a  mt, int index);.
2250: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2260: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
2270: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2280: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
2290: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22b0: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
22c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
22e0: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
22f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
2300: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
2310: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
2320: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
2330: 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21 50   index);..#if !P
2340: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2350: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
2360: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2370: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2380: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2390: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23a0: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
23b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23c0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
23d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23e0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
23f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
2400: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
2410: 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20 21  t index);..#if !
2420: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2430: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
2440: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2450: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
2460: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
2470: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2480: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
2490: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24a0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
24b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24c0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
24d0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
24e0: 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
24f0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
2500: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2510: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
2520: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
2530: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
2540: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
2550: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2560: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
2570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2580: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
2590: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25a0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
25b0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
25c0: 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66  IntPtr db);..#if
25d0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
25f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2600: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
2610: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
2620: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2630: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
2640: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
2650: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
2660: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2670: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
2680: 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74  ite3_prepare(Int
2690: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70  Ptr db, IntPtr p
26a0: 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c  Sql, int nBytes,
26b0: 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74   out IntPtr stmt
26c0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
26d0: 52 65 6d 61 69 6e 29 3b 0a 0a 23 69 66 20 21 50  Remain);..#if !P
26e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26f0: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
2700: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2710: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2720: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2730: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2740: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
2750: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2760: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
2770: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2780: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
2790: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
27a0: 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
27b0: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
27c0: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
27d0: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
27e0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
27f0: 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e  DataType, out In
2800: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
2810: 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   out int notNull
2820: 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72  , out int primar
2830: 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75  yKey, out int au
2840: 74 6f 49 6e 63 29 3b 0a 0a 23 69 66 20 21 50 4c  toInc);..#if !PL
2850: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2860: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
2870: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2880: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
2890: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28b0: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
28c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28d0: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
28e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
2900: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49  te3_value_text(I
2910: 6e 74 50 74 72 20 70 29 3b 0a 0a 23 69 66 20 21  ntPtr p);..#if !
2920: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2930: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
2940: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2950: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
2960: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
2970: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2980: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
2990: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29a0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
29b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29c0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
29d0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
29e0: 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0a 23 65  16(IntPtr p);.#e
29f0: 6e 64 69 66 0a 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
2a00: 67 69 6f 6e 0a 0a 20 20 20 20 2f 2f 20 54 68 65  gion..    // The
2a10: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
2a20: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
2a30: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
2a40: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
2a50: 6d 65 74 68 6f 64 2e 0a 20 20 20 20 2f 2f 20 41  method..    // A
2a60: 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22  ll of them are "
2a70: 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61  nice to haves" a
2a80: 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  nd not necessari
2a90: 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65  ly "need to have
2aa0: 73 22 2e 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  s"..    #region 
2ab0: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
2ac0: 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0a 0a 23  andard method..#
2ad0: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2ae0: 41 52 44 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ARD.    [DllImpo
2af0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2b00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2b10: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
2b20: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  r sqlite3_contex
2b30: 74 5f 63 6f 6c 6c 73 65 71 28 49 6e 74 50 74 72  t_collseq(IntPtr
2b40: 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e   context, out in
2b50: 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20  t type, out int 
2b60: 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  enc, out int len
2b70: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
2b80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2b90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2ba0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
2bb0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
2bc0: 6f 6c 6c 63 6f 6d 70 61 72 65 28 49 6e 74 50 74  ollcompare(IntPt
2bd0: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
2be0: 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c  ] p1, int p1len,
2bf0: 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20   byte[] p2, int 
2c00: 70 32 6c 65 6e 29 3b 0a 0a 20 20 20 20 5b 44 6c  p2len);..    [Dl
2c10: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2c20: 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  LL)].    interna
2c30: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2c40: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 75 72 73  int sqlite3_curs
2c50: 6f 72 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  or_rowid(IntPtr 
2c60: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
2c70: 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64  , out long rowid
2c80: 29 3b 0a 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  );..    [DllImpo
2c90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
2ca0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2cb0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
2cc0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c  qlite3_index_col
2cd0: 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70  umn_info_interop
2ce0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
2cf0: 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65  [] catalog, byte
2d00: 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79  [] IndexName, by
2d10: 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c  te[] ColumnName,
2d20: 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64   out int sortOrd
2d30: 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72  er, out int onEr
2d40: 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ror, out IntPtr 
2d50: 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69  Collation, out i
2d60: 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0a 0a 20 20  nt colllen);..  
2d70: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2d80: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
2d90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
2da0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
2db0: 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65 72  3_resetall_inter
2dc0: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a  op(IntPtr db);..
2dd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2de0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20  QLITE_DLL)].    
2df0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2e00: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
2e10: 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 28  e3_table_cursor(
2e20: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
2e30: 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f   db, int tableRo
2e40: 6f 74 50 61 67 65 29 3b 0a 23 65 6e 64 69 66 0a  otPage);.#endif.
2e50: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0a  .    #endregion.
2e60: 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64  .    // Standard
2e70: 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61   API calls globa
2e80: 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e  l across version
2e90: 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20  s.  There are a 
2ea0: 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66  few instances of
2eb0: 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0a 20   interop calls. 
2ec0: 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
2ed0: 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
2ee0: 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
2ef0: 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
2f00: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2f10: 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0a 20 20   is declared..  
2f20: 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61    #region standa
2f30: 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  rd sqlite api ca
2f40: 6c 6c 73 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  lls..#if !PLATFO
2f50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2f60: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
2f70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
2f80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2f90: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
2fa0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
2fb0: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
2fc0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
2fd0: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
2fe0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ff0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
3000: 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0a 0a 23  libversion();..#
3010: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
3020: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
3030: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3040: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
3050: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
3060: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
3070: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
3080: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3090: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
30a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
30b0: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
30c0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
30d0: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23  t(IntPtr db);..#
30e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
30f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
3100: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3110: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
3120: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
3130: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
3140: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
3150: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3160: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
3170: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3180: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
3190: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49  qlite3_changes(I
31a0: 6e 74 50 74 72 20 64 62 29 3b 0a 0a 23 69 66 20  ntPtr db);..#if 
31b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
31c0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
31d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
31e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
31f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
3200: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
3210: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
3220: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
3230: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
3240: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3250: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
3260: 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74  te3_busy_timeout
3270: 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
3280: 6d 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ms);..#if !PLATF
3290: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
32a0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
32b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
32c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
32d0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
32e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65  ntion.Cdecl)].#e
32f0: 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  lse.    [DllImpo
3300: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a  rt(SQLITE_DLL)].
3310: 23 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72  #endif.    inter
3320: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
3330: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
3340: 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  nd_blob(IntPtr s
3350: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
3360: 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  Byte[] value, in
3370: 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
3380: 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0a 0a 23 69  nTransient);..#i
3390: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
33a0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
33b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
33c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
33d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
33e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
33f0: 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e  ecl)].    intern
3400: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
3410: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
3420: 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  d_double(IntPtr 
3430: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3440: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0a   double value);.
3450: 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d  #else.    [DllIm
3460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
3470: 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ].    internal s
3480: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
3490: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
34a0: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
34b0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
34c0: 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
34d0: 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a  value);.#endif..
34e0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
34f0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
3500: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3510: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
3520: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
3530: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
3540: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
3550: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3560: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
3570: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
3580: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
3590: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
35a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
35b0: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
35c0: 75 65 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ue);..#if !PLATF
35d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
35e0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
35f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
3600: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3610: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3620: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20  ntion.Cdecl)].  
3630: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3640: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
3650: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28  ite3_bind_int64(
3660: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
3670: 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c   index, long val
3680: 75 65 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20 5b  ue);.#else.    [
3690: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
36a0: 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72  _DLL)].    inter
36b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
36c0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
36d0: 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
36e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
36f0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
3700: 67 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69 66  g value);.#endif
3710: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3720: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3730: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
3740: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
3750: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
3760: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3770: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
3780: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3790: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
37a0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
37b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
37c0: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e  t sqlite3_bind_n
37d0: 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ull(IntPtr stmt,
37e0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69   int index);..#i
37f0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3800: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
3810: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
3820: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
3830: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
3840: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
3850: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
3860: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3870: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
3880: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
3890: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
38a0: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
38b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
38c0: 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76   index, byte[] v
38d0: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
38e0: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
38f0: 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  d);..#if !PLATFO
3900: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3910: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
3920: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
3930: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
3940: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
3950: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
3960: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
3970: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
3980: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
3990: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
39a0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
39b0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
39c0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a  t(IntPtr stmt);.
39d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
39e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
39f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3a00: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
3a10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
3a20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
3a30: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
3a40: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3a50: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
3a60: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
3a70: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
3a80: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
3a90: 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e  rameter_index(In
3aa0: 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b  tPtr stmt, byte[
3ab0: 5d 20 73 74 72 4e 61 6d 65 29 3b 0a 0a 23 69 66  ] strName);..#if
3ac0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3ad0: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
3ae0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3af0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
3b00: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
3b10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
3b20: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
3b30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
3b40: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
3b50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3b60: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
3b70: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
3b80: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a  t(IntPtr stmt);.
3b90: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
3ba0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
3bb0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
3bc0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
3bd0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
3be0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
3bf0: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
3c00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
3c10: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
3c20: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
3c30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
3c40: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e   sqlite3_step(In
3c50: 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a 23 69 66  tPtr stmt);..#if
3c60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3c70: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
3c80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3c90: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
3ca0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
3cb0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
3cc0: 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61  cl)].    interna
3cd0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
3ce0: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63  double sqlite3_c
3cf0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74  olumn_double(Int
3d00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
3d10: 64 65 78 29 3b 0a 23 65 6c 73 65 0a 20 20 20 20  dex);.#else.    
3d20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
3d30: 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e 74 65  E_DLL)].    inte
3d40: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
3d50: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
3d60: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e  column_double_in
3d70: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
3d80: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
3d90: 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  t double value);
3da0: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 21 50 4c  .#endif..#if !PL
3db0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
3dc0: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
3dd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
3de0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
3df0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
3e00: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
3e10: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
3e20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3e30: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
3e40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
3e50: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
3e60: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
3e70: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
3e80: 65 78 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  ex);..#if !PLATF
3e90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
3ea0: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
3eb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
3ec0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3ed0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3ee0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20  ntion.Cdecl)].  
3ef0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3f00: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
3f10: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
3f20: 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
3f30: 69 6e 74 20 69 6e 64 65 78 29 3b 0a 23 65 6c 73  int index);.#els
3f40: 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  e.    [DllImport
3f50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20  (SQLITE_DLL)].  
3f60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3f70: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
3f80: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
3f90: 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
3fa0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
3fb0: 78 2c 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75  x, out long valu
3fc0: 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20  e);.#endif..#if 
3fd0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3fe0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
3ff0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4000: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
4010: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
4020: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
4030: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
4040: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
4050: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
4060: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4070: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
4080: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c  qlite3_column_bl
4090: 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
40a0: 69 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66  int index);..#if
40b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
40c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
40d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
40e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
40f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
4100: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
4110: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
4120: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4130: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
4140: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4150: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
4160: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
4170: 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  s(IntPtr stmt, i
4180: 6e 74 20 69 6e 64 65 78 29 3b 0a 0a 23 69 66 20  nt index);..#if 
4190: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
41a0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
41b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
41c0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
41d0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
41e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
41f0: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
4200: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
4210: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
4220: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4230: 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
4240: 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
4250: 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
4260: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
4270: 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
4280: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4290: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
42a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
42b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
42c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
42d0: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
42e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
42f0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
4300: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
4310: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
4320: 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  nt sqlite3_creat
4330: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
4340: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
4350: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
4360: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
4370: 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
4380: 20 66 75 6e 63 29 3b 0a 0a 23 69 66 20 21 50 4c   func);..#if !PL
4390: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
43a0: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
43b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
43c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
43d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
43e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
43f0: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
4400: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4410: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
4420: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4430: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
4440: 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74  _aggregate_count
4450: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
4460: 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
4470: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4480: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
4490: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
44a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
44b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
44c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
44d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
44e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
44f0: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
4500: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
4510: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
4520: 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  lue_blob(IntPtr 
4530: 70 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  p);..#if !PLATFO
4540: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
4550: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
4560: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
4570: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4580: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
4590: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c  tion.Cdecl)].#el
45a0: 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  se.    [DllImpor
45b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23  t(SQLITE_DLL)].#
45c0: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
45d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
45e0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
45f0: 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
4600: 70 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  p);..#if !PLATFO
4610: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
4620: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
4630: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
4640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4650: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
4660: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20 20  tion.Cdecl)].   
4670: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4680: 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73   extern double s
4690: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
46a0: 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0a 23  ble(IntPtr p);.#
46b0: 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  else.    [DllImp
46c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
46d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
46e0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
46f0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
4700: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
4710: 74 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75 62  tPtr p, out doub
4720: 6c 65 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69  le value);.#endi
4730: 66 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  f..#if !PLATFORM
4740: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4750: 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  K.    [DllImport
4760: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
4770: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
4780: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4790: 6f 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65  on.Cdecl)].#else
47a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
47b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e  SQLITE_DLL)].#en
47c0: 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  dif.    internal
47d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
47e0: 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
47f0: 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0a  _int(IntPtr p);.
4800: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
4810: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
4820: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4830: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
4840: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
4850: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4860: 2e 43 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74  .Cdecl)].    int
4870: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4880: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
4890: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
48a0: 50 74 72 20 70 29 3b 0a 23 65 6c 73 65 0a 20 20  Ptr p);.#else.  
48b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
48c0: 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69 6e  ITE_DLL)].    in
48d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
48e0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
48f0: 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e  3_value_int64_in
4900: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
4910: 6f 75 74 20 49 6e 74 36 34 20 76 61 6c 75 65 29  out Int64 value)
4920: 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 21 50  ;.#endif..#if !P
4930: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4940: 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c  RAMEWORK.    [Dl
4950: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4960: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
4970: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
4980: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
4990: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
49a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
49b0: 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69  L)].#endif.    i
49c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
49d0: 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
49e0: 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
49f0: 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
4a00: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
4a10: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
4a20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4a30: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
4a40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
4a50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4a60: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
4a70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4a80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
4a90: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
4aa0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
4ab0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
4ac0: 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f  t_blob(IntPtr co
4ad0: 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
4ae0: 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
4af0: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
4b00: 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  d);..#if !PLATFO
4b10: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
4b20: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
4b30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
4b40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4b50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
4b60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0a 20 20 20  tion.Cdecl)].   
4b70: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4b80: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
4b90: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
4ba0: 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  le(IntPtr contex
4bb0: 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  t, double value)
4bc0: 3b 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ;.#else.    [Dll
4bd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4be0: 4c 29 5d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  L)].    internal
4bf0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
4c00: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
4c10: 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  lt_double_intero
4c20: 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
4c30: 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
4c40: 75 65 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66  ue);.#endif..#if
4c50: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4c60: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
4c70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4c80: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
4c90: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
4ca0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
4cb0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
4cc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4cd0: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
4ce0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4cf0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
4d00: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
4d10: 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
4d20: 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
4d30: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0a 0a 23 69  , int nLen);..#i
4d40: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
4d50: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20  ACTFRAMEWORK.   
4d60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4d70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
4d80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
4d90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
4da0: 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20  ecl)].#else.    
4db0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4dc0: 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20  E_DLL)].#endif. 
4dd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4de0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
4df0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
4e00: 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
4e10: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0a 0a 23  , int value);..#
4e20: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4e30: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
4e40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
4e50: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
4e60: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
4e70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
4e80: 64 65 63 6c 29 5d 0a 20 20 20 20 69 6e 74 65 72  decl)].    inter
4e90: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
4ea0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
4eb0: 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50  esult_int64(IntP
4ec0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67  tr context, long
4ed0: 20 76 61 6c 75 65 29 3b 0a 23 65 6c 73 65 0a 20   value);.#else. 
4ee0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4ef0: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 20 20 20 20 69  LITE_DLL)].    i
4f00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4f10: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
4f20: 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f  e3_result_int64_
4f30: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
4f40: 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36  ontext, ref Int6
4f50: 34 20 76 61 6c 75 65 29 3b 0a 23 65 6e 64 69 66  4 value);.#endif
4f60: 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
4f70: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
4f80: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4f90: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
4fa0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
4fb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4fc0: 6e 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a  n.Cdecl)].#else.
4fd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4fe0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64  QLITE_DLL)].#end
4ff0: 69 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  if.    internal 
5000: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
5010: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
5020: 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f  t_null(IntPtr co
5030: 6e 74 65 78 74 29 3b 0a 0a 23 69 66 20 21 50 4c  ntext);..#if !PL
5040: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
5050: 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c  AMEWORK.    [Dll
5060: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5070: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5080: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5090: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
50a0: 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c 49  .#else.    [DllI
50b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
50c0: 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20 69 6e  )].#endif.    in
50d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
50e0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
50f0: 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e  3_result_text(In
5100: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
5110: 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
5120: 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
5130: 65 73 65 72 76 65 64 29 3b 0a 0a 23 69 66 20 21  eserved);..#if !
5140: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
5150: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
5160: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5170: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5180: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5190: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
51a0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
51b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
51c0: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
51d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
51e0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
51f0: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
5200: 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63  context(IntPtr c
5210: 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74  ontext, int nByt
5220: 65 73 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46  es);..#if !PLATF
5230: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5240: 57 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  WORK.    [DllImp
5250: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5260: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5270: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5280: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
5290: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
52a0: 6e 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a 20  nicode)].#else. 
52b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
52c0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
52d0: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
52e0: 6f 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  ode)].#endif.   
52f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5300: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
5310: 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
5320: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5330: 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76   index, string v
5340: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
5350: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
5360: 64 29 3b 0a 0a 23 69 66 20 21 50 4c 41 54 46 4f  d);..#if !PLATFO
5370: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
5380: 4f 52 4b 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ORK.    [DllImpo
5390: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
53a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
53b0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
53c0: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
53d0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
53e0: 69 63 6f 64 65 29 5d 0a 23 65 6c 73 65 0a 20 20  icode)].#else.  
53f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5400: 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
5410: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
5420: 64 65 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  de)].#endif.    
5430: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5440: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
5450: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
5460: 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  16(IntPtr contex
5470: 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d  t, string strNam
5480: 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0a 0a 23  e, int nLen);..#
5490: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
54a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
54b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
54c0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
54d0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
54e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
54f0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
5500: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
5510: 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c 6c  ].#else.    [Dll
5520: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5530: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
5540: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0a 23  rSet.Unicode)].#
5550: 65 6e 64 69 66 0a 20 20 20 20 69 6e 74 65 72 6e  endif.    intern
5560: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5570: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
5580: 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
5590: 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
55a0: 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
55b0: 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
55c0: 65 73 65 72 76 65 64 29 3b 0a 0a 23 69 66 20 21  eserved);..#if !
55d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
55e0: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
55f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5600: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5610: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5620: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5630: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
5640: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5650: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
5660: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5670: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
5680: 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62  e3_key(IntPtr db
5690: 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
56a0: 74 20 6b 65 79 6c 65 6e 29 3b 0a 0a 23 69 66 20  t keylen);..#if 
56b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
56c0: 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b  TFRAMEWORK.    [
56d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
56e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
56f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
5700: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
5710: 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44  l)].#else.    [D
5720: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5730: 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20  DLL)].#endif.   
5740: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5750: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
5760: 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72  te3_rekey(IntPtr
5770: 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
5780: 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0a 0a 23   int keylen);..#
5790: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
57a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
57b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
57c0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
57d0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
57e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
57f0: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
5800: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5810: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
5820: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5830: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
5840: 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65  r sqlite3_update
5850: 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
5860: 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c   SQLiteUpdateCal
5870: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
5880: 74 72 20 70 76 55 73 65 72 29 3b 0a 0a 23 69 66  tr pvUser);..#if
5890: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
58a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
58b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
58c0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
58d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
58e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
58f0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
5900: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5910: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
5920: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5930: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5940: 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68  sqlite3_commit_h
5950: 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
5960: 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62  QLiteCommitCallb
5970: 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
5980: 20 70 76 55 73 65 72 29 3b 0a 0a 23 69 66 20 21   pvUser);..#if !
5990: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
59a0: 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20 5b 44  FRAMEWORK.    [D
59b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
59c0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
59d0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
59e0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
59f0: 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b 44 6c  )].#else.    [Dl
5a00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5a10: 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20 20 20  LL)].#endif.    
5a20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5a30: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5a40: 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68  lite3_rollback_h
5a50: 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
5a60: 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c  QLiteRollbackCal
5a70: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
5a80: 74 72 20 70 76 55 73 65 72 29 3b 0a 0a 23 69 66  tr pvUser);..#if
5a90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
5aa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20 20 20  CTFRAMEWORK.    
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 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5ad0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5ae0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5af0: 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20 20 5b  cl)].#else.    [
5b00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5b10: 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a 20 20  _DLL)].#endif.  
5b20: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5b30: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5b40: 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c  sqlite3_db_handl
5b50: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a  e(IntPtr stmt);.
5b60: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
5b70: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a  OMPACTFRAMEWORK.
5b80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5b90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
5ba0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
5bb0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5bc0: 2e 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20  .Cdecl)].#else. 
5bd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5be0: 4c 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69  LITE_DLL)].#endi
5bf0: 66 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  f.    internal s
5c00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5c10: 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
5c20: 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
5c30: 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0a 0a   IntPtr stmt);..
5c40: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
5c50: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20  MPACTFRAMEWORK. 
5c60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5c70: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5c80: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5c90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5ca0: 43 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20  Cdecl)].#else.  
5cb0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5cc0: 49 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66  ITE_DLL)].#endif
5cd0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5ce0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
5cf0: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74  sqlite3_exec(Int
5d00: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
5d10: 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76  trSql, IntPtr pv
5d20: 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72  Callback, IntPtr
5d30: 20 70 76 50 61 72 61 6d 2c 20 6f 75 74 20 49 6e   pvParam, out In
5d40: 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0a 0a 23  tPtr errMsg);..#
5d50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5d60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
5d70: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5d80: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
5d90: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
5da0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
5db0: 64 65 63 6c 29 5d 0a 23 65 6c 73 65 0a 20 20 20  decl)].#else.   
5dc0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5dd0: 54 45 5f 44 4c 4c 29 5d 0a 23 65 6e 64 69 66 0a  TE_DLL)].#endif.
5de0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5df0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
5e00: 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63  qlite3_get_autoc
5e10: 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29  ommit(IntPtr db)
5e20: 3b 0a 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
5e30: 6e 0a 20 20 7d 0a 0a 23 69 66 20 50 4c 41 54 46  n.  }..#if PLATF
5e40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5e50: 57 4f 52 4b 0a 20 20 69 6e 74 65 72 6e 61 6c 20  WORK.  internal 
5e60: 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
5e70: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
5e80: 49 44 69 73 70 6f 73 61 62 6c 65 0a 20 20 7b 0a  IDisposable.  {.
5e90: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
5ea0: 20 5f 69 73 43 6c 6f 73 65 64 3b 0a 20 20 20 20   _isClosed;.    
5eb0: 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72  protected IntPtr
5ec0: 20 68 61 6e 64 6c 65 3b 0a 20 20 20 20 0a 20 20   handle;.    .  
5ed0: 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74    protected Crit
5ee0: 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74  icalHandle(IntPt
5ef0: 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  r invalidHandleV
5f00: 61 6c 75 65 29 0a 20 20 20 20 7b 0a 20 20 20 20  alue).    {.    
5f10: 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c    handle = inval
5f20: 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0a 20  idHandleValue;. 
5f30: 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
5f40: 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20   false;.    }.. 
5f50: 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
5f60: 6c 65 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  le().    {.     
5f70: 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
5f80: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 69 76  .    }..    priv
5f90: 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
5fa0: 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 69  ().    {.      i
5fb0: 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0a 20 20  f (!IsClosed).  
5fc0: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 74 68      {.        th
5fd0: 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
5fe0: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 69 66 20  rue;.        if 
5ff0: 28 21 49 73 49 6e 76 61 6c 69 64 29 0a 20 20 20  (!IsInvalid).   
6000: 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20       {.         
6010: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
6020: 3b 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53  ;.          GC.S
6030: 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
6040: 74 68 69 73 29 3b 0a 20 20 20 20 20 20 20 20 7d  this);.        }
6050: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a  .      }.    }..
6060: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
6070: 43 6c 6f 73 65 28 29 0a 20 20 20 20 7b 0a 20 20  Close().    {.  
6080: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
6090: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75  );.    }..    pu
60a0: 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
60b0: 65 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  e().    {.      
60c0: 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0a 20  Dispose(true);. 
60d0: 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65 63     }..    protec
60e0: 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
60f0: 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
6100: 73 70 6f 73 69 6e 67 29 0a 20 20 20 20 7b 0a 20  sposing).    {. 
6110: 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0a       Cleanup();.
6120: 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65      }..    prote
6130: 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f  cted abstract bo
6140: 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
6150: 28 29 3b 0a 0a 20 20 20 20 70 72 6f 74 65 63 74  ();..    protect
6160: 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ed void SetHandl
6170: 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0a  e(IntPtr value).
6180: 20 20 20 20 7b 0a 20 20 20 20 20 20 68 61 6e 64      {.      hand
6190: 6c 65 20 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20  le = value;.    
61a0: 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  }..    public vo
61b0: 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e  id SetHandleAsIn
61c0: 76 61 6c 69 64 28 29 0a 20 20 20 20 7b 0a 20 20  valid().    {.  
61d0: 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
61e0: 74 72 75 65 3b 0a 20 20 20 20 20 20 47 43 2e 53  true;.      GC.S
61f0: 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
6200: 74 68 69 73 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  this);.    }..  
6210: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
6220: 43 6c 6f 73 65 64 0a 20 20 20 20 7b 0a 20 20 20  Closed.    {.   
6230: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
6240: 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0a 20 20 20  _isClosed; }.   
6250: 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20 61   }..    public a
6260: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49  bstract bool IsI
6270: 6e 76 61 6c 69 64 0a 20 20 20 20 7b 0a 20 20 20  nvalid.    {.   
6280: 20 20 20 67 65 74 3b 0a 20 20 20 20 7d 0a 0a 20     get;.    }.. 
6290: 20 7d 0a 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2f   }..#endif..  //
62a0: 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d   Handles the unm
62b0: 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20  anaged database 
62c0: 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f  pointer, and pro
62d0: 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
62e0: 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  on support for i
62f0: 74 2e 0a 20 20 69 6e 74 65 72 6e 61 6c 20 63 6c  t..  internal cl
6300: 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
6310: 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
6320: 74 69 63 61 6c 48 61 6e 64 6c 65 0a 20 20 7b 0a  ticalHandle.  {.
6330: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
6340: 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
6350: 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
6360: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
6370: 65 20 64 62 29 0a 20 20 20 20 7b 0a 20 20 20 20  e db).    {.    
6380: 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64    return db.hand
6390: 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70  le;.    }..    p
63a0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
63b0: 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 53  licit operator S
63c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
63d0: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 29  andle(IntPtr db)
63e0: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 72 65 74  .    {.      ret
63f0: 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 6f  urn new SQLiteCo
6400: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 64  nnectionHandle(d
6410: 62 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70  b);.    }..    p
6420: 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
6430: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e  nectionHandle(In
6440: 74 50 74 72 20 64 62 29 0a 20 20 20 20 20 20 3a  tPtr db).      :
6450: 20 74 68 69 73 28 29 0a 20 20 20 20 7b 0a 20 20   this().    {.  
6460: 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62      SetHandle(db
6470: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 6e  );.    }..    in
6480: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
6490: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 29 0a  nectionHandle().
64a0: 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
64b0: 50 74 72 2e 5a 65 72 6f 29 0a 20 20 20 20 7b 0a  Ptr.Zero).    {.
64c0: 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65      }..    prote
64d0: 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
64e0: 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
64f0: 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 74  ().    {.      t
6500: 72 79 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20  ry.      {.     
6510: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
6520: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
6530: 69 73 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20  is);.      }.   
6540: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
6550: 45 78 63 65 70 74 69 6f 6e 29 0a 20 20 20 20 20  Exception).     
6560: 20 7b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20   {.      }.     
6570: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20   return true;.  
6580: 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20    }..    public 
6590: 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
65a0: 49 6e 76 61 6c 69 64 0a 20 20 20 20 7b 0a 20 20  Invalid.    {.  
65b0: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
65c0: 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
65d0: 74 72 2e 5a 65 72 6f 29 3b 20 7d 0a 20 20 20 20  tr.Zero); }.    
65e0: 7d 0a 20 20 7d 0a 0a 20 20 2f 2f 20 50 72 6f 76  }.  }..  // Prov
65f0: 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
6600: 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
6610: 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
6620: 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 69 6e 74  tatements..  int
6630: 65 72 6e 61 6c 20 63 6c 61 73 73 20 53 51 4c 69  ernal class SQLi
6640: 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
6650: 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
6660: 6c 65 0a 20 20 7b 0a 20 20 20 20 70 75 62 6c 69  le.  {.    publi
6670: 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
6680: 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
6690: 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  r(SQLiteStatemen
66a0: 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0a 20 20  tHandle stmt).  
66b0: 20 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e    {.      return
66c0: 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0a 20 20   stmt.handle;.  
66d0: 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20    }..    public 
66e0: 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
66f0: 6f 70 65 72 61 74 6f 72 20 53 51 4c 69 74 65 53  operator SQLiteS
6700: 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 49  tatementHandle(I
6710: 6e 74 50 74 72 20 73 74 6d 74 29 0a 20 20 20 20  ntPtr stmt).    
6720: 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e  {.      return n
6730: 65 77 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ew SQLiteStateme
6740: 6e 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0a  ntHandle(stmt);.
6750: 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 69 76 61      }..    priva
6760: 74 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  te SQLiteStateme
6770: 6e 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  ntHandle(IntPtr 
6780: 73 74 6d 74 29 0a 20 20 20 20 20 20 3a 20 74 68  stmt).      : th
6790: 69 73 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  is().    {.     
67a0: 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29   SetHandle(stmt)
67b0: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 6e 74  ;.    }..    int
67c0: 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74  ernal SQLiteStat
67d0: 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0a 20 20  ementHandle().  
67e0: 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
67f0: 72 2e 5a 65 72 6f 29 0a 20 20 20 20 7b 0a 20 20  r.Zero).    {.  
6800: 20 20 7d 0a 0a 20 20 20 20 70 72 6f 74 65 63 74    }..    protect
6810: 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
6820: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
6830: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 74 72 79  .    {.      try
6840: 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20  .      {.       
6850: 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
6860: 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 74 68  lizeStatement(th
6870: 69 73 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20  is);.      }.   
6880: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
6890: 45 78 63 65 70 74 69 6f 6e 29 0a 20 20 20 20 20  Exception).     
68a0: 20 7b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20   {.      }.     
68b0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20   return true;.  
68c0: 20 20 7d 0a 0a 20 20 20 20 70 75 62 6c 69 63 20    }..    public 
68d0: 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
68e0: 49 6e 76 61 6c 69 64 0a 20 20 20 20 7b 0a 20 20  Invalid.    {.  
68f0: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
6900: 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
6910: 74 72 2e 5a 65 72 6f 29 3b 20 7d 0a 20 20 20 20  tr.Zero); }.    
6920: 7d 0a 20 20 7d 0a 7d 0a                          }.  }.}.