System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2b921410d6af3e4bc0e4a3e63dfee1f3a99e38ef:


0000: 2f 2a 2a 2a 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 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.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 0d 0a 20 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: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c  (TRACE_PRELOAD |
01a0: 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29 0d  | TRACE_HANDLE).
01b0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01c0: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01d0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01e0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01f0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
0200: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
0210: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
0220: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0240: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0250: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0260: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0270: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0280: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0290: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
02a0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02b0: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02c0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02e0: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
02f0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0300: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0310: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
0340: 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53 75  && !DEBUG..  [Su
0350: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
0360: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65  odeSecurity]..#e
0370: 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ndif..  internal
0380: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
0390: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
03a0: 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72  s..  {..      #r
03b0: 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20 48  egion Critical H
03c0: 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44 65  andle Counts (De
03d0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d  bug Build Only).
03e0: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
03f0: 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  E..      //..   
0400: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73     // NOTE: Thes
0410: 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73 65  e counts represe
0420: 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  nt the total num
0430: 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
0440: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ng..      //    
0450: 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64     (non-disposed
0460: 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
0470: 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74 20   derived object 
0480: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
0490: 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74 65   //       create
04a0: 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61 72  d by this librar
04b0: 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61 72  y and are primar
04c0: 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d 0a  ily for use by..
04d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
04e0: 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20 20  he test suite.  
04f0: 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72 65  These counts are
0500: 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79 20   incremented by 
0510: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
0520: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
0530: 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64 20  onstructors and 
0540: 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20  are decremented 
0550: 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  upon the..      
0560: 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73 73  //       success
0570: 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f  ful completion o
0580: 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  f the associated
0590: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a   ReleaseHandle..
05a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d        //       m
05b0: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f  ethods...      /
05c0: 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  /..      interna
05d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6e  l static int con
05e0: 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20  nectionCount;.. 
05f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
0600: 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d 65  atic int stateme
0610: 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  ntCount;..      
0620: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0630: 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b  int backupCount;
0640: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
0650: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0660: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
06b0: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
06c0: 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
06d0: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
06e0: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
06f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0700: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
0710: 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
0720: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
0730: 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
0740: 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
0750: 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
0760: 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
0770: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
0780: 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
0790: 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
07a0: 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
07b0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
07c0: 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
07d0: 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
07e0: 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
07f0: 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
0800: 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
0810: 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
0820: 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
0830: 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
0840: 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
0850: 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
0860: 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
0870: 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
0880: 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
0890: 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
08a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
08b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
08c0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
08d0: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
08e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
08f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
0900: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
0910: 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
0920: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
0930: 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
0940: 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
0950: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
0960: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
0970: 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
0980: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
0990: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
09a0: 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ARY..#if !PLATFO
09b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
09c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ORK..      /// <
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
09e0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
09f0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
0a00: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
0a10: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
0a20: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
0a30: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
0a40: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
0a50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0a60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0a70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0a80: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
0a90: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
0aa0: 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
0ab0: 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
0ac0: 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65 6e  HITECTURE";..#en
0ad0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0b30: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0b40: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44  eadonly string D
0b50: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
0b60: 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20  = ".dll";....   
0b70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0bc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0bd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0be0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
0bf0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
0c00: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
0c10: 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79  in32 LoadLibrary
0c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
0c30: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
0c40: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
0c50: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
0c60: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
0c70: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
0c80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0ca0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
0cb0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
0cc0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
0cd0: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
0ce0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
0cf0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
0d00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
0d10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
0d20: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
0d30: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
0d40: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
0d50: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
0d60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
0d70: 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ns>..#if !PLATFO
0d80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0d90: 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ORK..      [DllI
0da0: 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22  mport("kernel32"
0db0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
0dc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
0dd0: 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  dll",..#endif.. 
0de0: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
0df0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
0e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
0e10: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
0e20: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
0e30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0e40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0e50: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
0e60: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
0e70: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
0e80: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
0e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
0ea0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
0eb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
0ec0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
0ed0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
0ee0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
0ef0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
0f00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f50: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
0f60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0f90: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
0fa0: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
0fb0: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
0fc0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
0fd0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
0fe0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
0ff0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
1000: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
1010: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
1020: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
1030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1050: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1060: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
1070: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
1080: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
1090: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
10a0: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
10b0: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
10c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10d0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
10e0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
10f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1110: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
1120: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1130: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
1140: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
1150: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
1160: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
1170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
11c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
11e0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
11f0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
1200: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
1210: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
1220: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
1230: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
1240: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
1250: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
1260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1270: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1280: 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f  te enum Processo
1290: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20  rArchitecture : 
12a0: 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54  ushort /* COMPAT
12b0: 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20  : Win32. */..   
12c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12d0: 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20  Intel = 0,..    
12e0: 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d        MIPS = 1,.
12f0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
1300: 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 2,..         
1310: 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20   PowerPC = 3,.. 
1320: 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34           SHx = 4
1330: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d  ,..          ARM
1340: 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 5,..         
1350: 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20   IA64 = 6,..    
1360: 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20        Alpha64 = 
1370: 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53  7,..          MS
1380: 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20  IL = 8,..       
1390: 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20     AMD64 = 9,.. 
13a0: 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e           IA32_on
13b0: 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20  _Win64 = 10,..  
13c0: 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20          Unknown 
13d0: 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20  = 0xFFFF..      
13e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1430: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1440: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1450: 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74   /// This struct
1460: 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ure contains inf
1470: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
1480: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75  he current compu
1490: 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20  ter. This..     
14a0: 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68   /// includes th
14b0: 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65  e processor type
14c0: 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d  , page size, mem
14d0: 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65  ory addresses, e
14e0: 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tc...      /// <
14f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1500: 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1510: 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1520: 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72  tial)]..      pr
1530: 69 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53  ivate struct SYS
1540: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
1550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
1560: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
1570: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
1580: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1590: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
15a0: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
15b0: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
15c0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
15d0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
15e0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
15f0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1600: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1610: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
1620: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
1630: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
1640: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1650: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
1660: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
1670: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1690: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
16a0: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
16b0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
16c0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16d0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
16e0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
16f0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
1700: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
1710: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
1720: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1730: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1740: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
1750: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
1760: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
1770: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
1780: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
1790: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
17a0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
17b0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
17c0: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
17d0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
17e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
17f0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
1800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1850: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1860: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
1870: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
1880: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
1890: 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 61   _SQLiteModule a
18a0: 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nd..      /// pr
18b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18c0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
18d0: 6c 64 73 2c 20 62 65 6c 6f 77 2e 0d 0a 20 20 20  lds, below...   
18e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1900: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1910: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
1920: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1930: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1990: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19a0: 20 20 20 20 20 20 2f 2f 2f 20 53 74 6f 72 65 73        /// Stores
19b0: 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65   the mappings be
19c0: 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20  tween processor 
19d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
19e0: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 0d  es and platform.
19f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73  .      /// names
1a00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1a10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1a20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69  rivate static Di
1a30: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1a40: 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73   string> process
1a50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1a60: 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20  atforms;....    
1a70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1ac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1ae0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
1af0: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
1b00: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
1b10: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
1b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
1b30: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
1b40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b50: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1b60: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
1b70: 74 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74  teModule = IntPt
1b80: 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1b90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1bf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e  .      /// For n
1c00: 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ow, this method 
1c10: 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65  simply calls the
1c20: 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68   Initialize meth
1c30: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
1c40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c50: 20 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61   static UnsafeNa
1c60: 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20  tiveMethods().. 
1c70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c80: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d    Initialize();.
1c90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1ca0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1cf0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
1d10: 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69  mpts to initiali
1d20: 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79  ze this class by
1d30: 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65   pre-loading the
1d40: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
1d50: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
1d60: 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  y for the proces
1d70: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1d80: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1d90: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
1da0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1db0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1dc0: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
1dd0: 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b  alize()..      {
1de0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1e10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1e20: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72  E: If the "No_Pr
1e30: 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76  eLoadSQLite" env
1e40: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
1e50: 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20  e is set (to..  
1e60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1e70: 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70   anything), skip
1e80: 20 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c   all our special
1e90: 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79   code and simply
1ea0: 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20   return...      
1eb0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1ec0: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
1ed0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
1ee0: 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 50 72 65  Variable("No_Pre
1ef0: 4c 6f 61 64 53 51 4c 69 74 65 22 29 20 21 3d 20  LoadSQLite") != 
1f00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1f10: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
1f20: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1f30: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1f40: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1f70: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
1f80: 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69  ake sure this li
1f90: 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66  st is updated if
1fa0: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a   the supported..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1fd0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1fe0: 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66  mes and/or platf
1ff0: 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  orm names..     
2000: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2010: 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20    changes...    
2020: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2030: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2040: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2050: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
2060: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2070: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
20b0: 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f  e the map of pro
20c0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
20d0: 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  ure names..     
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
20f0: 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72        to platfor
2100: 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20  m names using a 
2110: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
2120: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
2130: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2140: 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20      comparer... 
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2170: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2180: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2190: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
21b0: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
21c0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a  ring, string>(..
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
21f0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
2200: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a  IgnoreCase);....
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2230: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2240: 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20   Setup the list 
2250: 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  of platform name
2260: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2270: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2280: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2290: 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63  e supported proc
22a0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
22b0: 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  res...          
22c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
22e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
22f0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
2300: 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29  ("x86", "Win32")
2310: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2320: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
2330: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
2340: 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c  rms.Add("AMD64",
2350: 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20   "x64");..      
2360: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
2370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2380: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
2390: 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22  IA64", "Itanium"
23a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23b0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
23c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
23d0: 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20  orms.Add("ARM", 
23e0: 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20  "WinCE");..     
23f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2420: 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62   BUGBUG: What ab
2430: 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63  out other applic
2440: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a  ation domains?..
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2470: 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  if (_SQLiteModul
2480: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2490: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24a0: 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64 75       _SQLiteModu
24b0: 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c 69  le = PreLoadSQLi
24c0: 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c 6c  teDll(null, null
24d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
24e0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
24f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2540: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
2560: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2570: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
2580: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
2590: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
25a0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
25b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
25c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
25d0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25e0: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
25f0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
2600: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
2610: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
2620: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
2630: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2640: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
2650: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2660: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2670: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2680: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
2690: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  y()..      {..#i
26a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
26e0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
26f0: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
2700: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
2710: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
2720: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
2730: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
2740: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
2750: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
2760: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2770: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
2780: 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e  ectory = Environ
2790: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
27a0: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
27c0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
27d0: 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20  irectory");.... 
27e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
27f0: 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
2800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2810: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
2820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
2840: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
2850: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
2860: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
2870: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
2880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2890: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
28a0: 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
28b0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
28c0: 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  he directory..  
28d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
28f0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
2900: 69 6e 67 20 61 73 73 65 6d 62 6c 79 20 28 69 2e  ing assembly (i.
2910: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
2920: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
2930: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
2940: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
2950: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62 61 73  ation domain bas
2960: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
2970: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e        directory.
2980: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
29a0: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
29b0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
29c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29d0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
29e0: 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
29f0: 65 63 74 6f 72 79 22 29 20 21 3d 20 6e 75 6c 6c  ectory") != null
2a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a40: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
2a50: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2a60: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
2a70: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a90: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
2aa0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2ab0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad0: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
2ae0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
2af0: 61 6d 65 28 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  ame(assembly.Loc
2b00: 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ation);....     
2b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b20: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
2b30: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
2b40: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b60: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
2b70: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
2b80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ba0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
2be0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2c00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
2c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
2c20: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
2c30: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
2c40: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
2c50: 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
2c60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
2c70: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
2c80: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
2c90: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ca0: 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
2cb0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
2cc0: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
2cd0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ce0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
2cf0: 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
2d00: 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
2d10: 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
2d20: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
2d30: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
2d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d50: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2d60: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
2d70: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
2d80: 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
2d90: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2da0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61    if (assemblyNa
2db0: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
2dc0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2dd0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2de0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e00: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
2e10: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
2e20: 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  e(assemblyName.C
2e30: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
2e40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e50: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2e60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e70: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
2e80: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  g...          }.
2e90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
2ea0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69  urn null;..#endi
2eb0: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
2ec0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2f10: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f20: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
2f30: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
2f40: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
2f50: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
2f60: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
2f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
2f80: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
2f90: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
2fa0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2fb0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2fc0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
2fd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
2fe0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
2ff0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
3000: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
3010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3020: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3030: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3040: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
3050: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
3060: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
3070: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
3080: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
3090: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
30a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
30b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
30c0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
30d0: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
30e0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
30f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
3100: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
3110: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3120: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
3130: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
3140: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3160: 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61    PlatformID pla
3170: 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f  tformId = Enviro
3180: 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e  nment.OSVersion.
3190: 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20  Platform;....   
31a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31b0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
31c0: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29  atformID.Win32S)
31d0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
31e0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
31f0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
3200: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
3210: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
3220: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
3230: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
3240: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3260: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
3270: 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d  tformID.WinCE)).
3280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a0: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
32b0: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
32c0: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
32f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
3300: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3330: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3340: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
3350: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3380: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
33a0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
33b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3420: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
3430: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3440: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
3450: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
3460: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
3470: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
3480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3490: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
34a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
34b0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
34c0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
34d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
34e0: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
34f0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
3500: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
3510: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
3520: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3530: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3540: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
3550: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3560: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
3570: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3580: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3590: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
35b0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
35c0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
35d0: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
35e0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
35f0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
3600: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
3610: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
3620: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3630: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
3640: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
3650: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
3660: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3670: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
3680: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
3690: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
36a0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
36b0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
36c0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
36d0: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
36e0: 74 65 63 74 75 72 65 22 29 3b 0d 0a 0d 0a 20 20  tecture");....  
36f0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3700: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3710: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
3720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3730: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
3740: 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
3750: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3760: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
3770: 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
3780: 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
3790: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
37a0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
37b0: 63 68 69 74 65 63 74 75 72 65 20 3d 20 45 6e 76  chitecture = Env
37c0: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
37d0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
37e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37f0: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
3800: 45 43 54 55 52 45 29 3b 0d 0a 0d 0a 20 20 20 20  ECTURE);....    
3810: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3820: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65      // HACK: Che
3830: 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73  ck for an "impos
3840: 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e  sible" situation
3850: 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65  .  If the pointe
3860: 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  r size..        
3870: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32    //       is 32
3880: 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65  -bits, the proce
3890: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
38a0: 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44  e cannot be "AMD
38b0: 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  64"...          
38c0: 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74  //       In that
38d0: 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c   case, we are al
38e0: 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68  most certainly h
38f0: 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20  itting a bug in 
3900: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
3910: 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
3920: 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20  g system and/or 
3930: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
3940: 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20  at causes the.. 
3950: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3960: 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48    PROCESSOR_ARCH
3970: 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e  ITECTURE environ
3980: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
3990: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
39a0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
39b0: 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20   wrong value in 
39c0: 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63  some circumstanc
39d0: 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65  es.  Please refe
39e0: 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20  r to ticket..   
39f0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
3a00: 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72  [9ac9862611] for
3a10: 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
3a20: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
3a30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
3a40: 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  f ((IntPtr.Size 
3a50: 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20  == sizeof(int)) 
3a60: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
3a70: 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28    String.Equals(
3a80: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
3a90: 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d  cture, "AMD64",.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ab0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
3ac0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
3ad0: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
3ae0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
3af0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
3b00: 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
3b10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
3b30: 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e  OTE: When tracin
3b40: 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61  g is enabled, sa
3b50: 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c  ve the originall
3b60: 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20  y detected..    
3b70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3b80: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
3b90: 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65  hitecture before
3ba0: 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20   changing it... 
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
3bd0: 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65  tring savedProce
3be0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3bf0: 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68   = processorArch
3c00: 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69  itecture;..#endi
3c10: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
3c20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3c30: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
3c40: 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61   know that opera
3c50: 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61  ting systems tha
3c60: 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22  t return "AMD64"
3c70: 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   as..           
3c80: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
3c90: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3ca0: 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61  ecture are actua
3cb0: 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f  lly a superset o
3cc0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
3cd0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78   //       the "x
3ce0: 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  86" processor ar
3cf0: 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72  chitecture; ther
3d00: 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20  efore, return.. 
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
3d20: 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e        "x86" when
3d30: 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a   the pointer siz
3d40: 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20  e is 32-bits... 
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
3d70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
3d80: 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d  ture = "x86";...
3d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3da0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3db0: 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74   // NOTE: Show t
3dc0: 68 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69  hat we hit a fai
3dd0: 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75  rly unusual situ
3de0: 61 74 69 6f 6e 20 28 69 2e 65 2e 20 74 68 65 0d  ation (i.e. the.
3df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3e00: 2f 20 20 20 20 20 20 20 22 77 72 6f 6e 67 22 20  /       "wrong" 
3e10: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3e20: 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65 63  ecture was detec
3e30: 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20  ted)...         
3e40: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 4e 45       //..#if !NE
3e50: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
3e60: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
3e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
3e80: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
3e90: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
3eb0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
3ec0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
3ee0: 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69 74 20  etected {0}-bit 
3ef0: 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 77 69 74  pointer size wit
3f00: 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  h processor arch
3f10: 69 74 65 63 74 75 72 65 20 22 20 2b 0d 0a 20 20  itecture " +..  
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 22 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20  "\"{1}\", using 
3f40: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3f50: 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69  ecture \"{2}\" i
3f60: 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20  nstead...",..   
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
3f80: 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f  ntPtr.Size * 8 /
3f90: 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64  * bits */, saved
3fa0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
3fb0: 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  cture,..        
3fc0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
3fd0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
3fe0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
3ff0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4000: 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
4010: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
4020: 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
4030: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4040: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74     // NOTE: On t
4050: 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
4060: 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d  Framework, attem
4070: 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 6e 61  pt to use the na
4080: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
4090: 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20 41  //       Win32 A
40a0: 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61  PI function (via
40b0: 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20   P/Invoke) that 
40c0: 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73 20 77  can provide us w
40d0: 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ith..          /
40e0: 2f 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63  /       the proc
40f0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4100: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  re...          /
4110: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  /..          try
4120: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
4130: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
4140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4150: 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74 70  / NOTE: The outp
4160: 75 74 20 6f 66 20 74 68 65 20 47 65 74 53 79 73  ut of the GetSys
4170: 74 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e  temInfo function
4180: 20 77 69 6c 6c 20 62 65 20 70 6c 61 63 65 64 0d   will be placed.
4190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
41a0: 2f 20 20 20 20 20 20 20 68 65 72 65 2e 20 20 4f  /       here.  O
41b0: 6e 6c 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f  nly the processo
41c0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  r architecture f
41d0: 69 65 6c 64 20 69 73 20 75 73 65 64 20 62 79 0d  ield is used by.
41e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
41f0: 2f 20 20 20 20 20 20 20 74 68 69 73 20 6d 65 74  /       this met
4200: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
4210: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4220: 20 20 20 20 20 20 53 59 53 54 45 4d 5f 49 4e 46        SYSTEM_INF
4230: 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d  O systemInfo;...
4240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4250: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4260: 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20   // NOTE: Query 
4270: 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  the system infor
4280: 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76  mation via P/Inv
4290: 6f 6b 65 2c 20 74 68 75 73 20 66 69 6c 6c 69 6e  oke, thus fillin
42a0: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
42b0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 74   //       the st
42c0: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
42d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
42e0: 20 20 20 20 20 20 20 20 20 20 47 65 74 53 79 73            GetSys
42f0: 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74  temInfo(out syst
4300: 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
4310: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
4320: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
4330: 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20  OTE: Return the 
4340: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
4350: 65 63 74 75 72 65 20 76 61 6c 75 65 20 61 73 20  ecture value as 
4360: 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  a string...     
4370: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4380: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4390: 6e 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72  n systemInfo.wPr
43a0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
43b0: 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  ure.ToString();.
43c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
43d0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
43e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
43f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
4400: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
4410: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4420: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4430: 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66   // NOTE: Upon f
4440: 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61  ailure, return a
4450: 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0d  n empty string..
4460: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
4470: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4480: 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23  String.Empty;..#
4490: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
44a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
44b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44f0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
4500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4510: 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
4520: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4530: 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
4540: 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
4550: 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
4560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4570: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4580: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
4590: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
45a0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
45b0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
45c0: 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
45d0: 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
45e0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
45f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4600: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4610: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
4620: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
4630: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
4640: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
4650: 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
4660: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
4670: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
4680: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
4690: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
46a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
46b0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
46c0: 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
46d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
46e0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
46f0: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
4700: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4710: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
4720: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f  sNullOrEmpty(pro
4730: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4740: 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  re))..          
4750: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
4760: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
4770: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
4780: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
4790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
47a0: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
47b0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
47c0: 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
47d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
47e0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
4800: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
4810: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4820: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
4830: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
4840: 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75  forms.TryGetValu
4850: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
4860: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
4870: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
4880: 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d   out platformNam
4890: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
48a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
48b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
48c0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20  latformName;..  
48d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
48e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
48f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
4900: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
4910: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
4970: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4980: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
4990: 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  d the native SQL
49a0: 69 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65  ite library base
49b0: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
49c0: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69  ed..      /// di
49d0: 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63  rectory and proc
49e0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
49f0: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
4a00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4a10: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4a20: 3d 22 64 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  ="directory">.. 
4a30: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
4a40: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
4a50: 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
4a60: 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
4a70: 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
4a80: 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
4a90: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
4aa0: 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
4ab0: 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
4ac0: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
4ad0: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
4ae0: 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
4af0: 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
4b00: 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
4b10: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4b20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4b30: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
4b40: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
4b50: 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
4b60: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
4b70: 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
4b80: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
4b90: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
4ba0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
4bb0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
4bc0: 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
4bd0: 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
4be0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
4bf0: 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
4c00: 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
4c10: 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
4c20: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
4c30: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
4c40: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
4c50: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
4c60: 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72   handle as retur
4c70: 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61  ned by LoadLibra
4c80: 72 79 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ry -OR- IntPtr.Z
4c90: 65 72 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  ero..      /// i
4ca0: 66 20 74 68 65 20 6c 6f 61 64 69 6e 67 20 66 61  f the loading fa
4cb0: 69 6c 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73  ils for any reas
4cc0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
4cd0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4ce0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
4cf0: 49 6e 74 50 74 72 20 50 72 65 4c 6f 61 64 53 51  IntPtr PreLoadSQ
4d00: 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20  LiteDll(..      
4d10: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
4d20: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
4d30: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
4d40: 72 41 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20  rArchitecture.. 
4d50: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4d60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
4d70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
4d80: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
4d90: 63 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65  cified base dire
4da0: 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75  ctory is null, u
4db0: 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d  se the default..
4dc0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
4dd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
4de0: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
4df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
4e00: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61  irectory = GetBa
4e10: 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  seDirectory();..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
4e30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4e40: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
4e50: 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73  to query the bas
4e60: 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f  e directory, sto
4e70: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
4e80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4e90: 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d  if (directory ==
4ea0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
4eb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
4ec0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
4ed0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4ee0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
4ef0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
4f00: 74 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74  te library exist
4f10: 73 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69  s in the base di
4f20: 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20  rectory..       
4f30: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65     //       itse
4f40: 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  lf, stop now... 
4f50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4f60: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
4f70: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
4f80: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
4f90: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
4fa0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4fb0: 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a   SQLITE_DLL));..
4fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
4fd0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
4fe0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
4ff0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
5000: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
5010: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5020: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
5030: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
5040: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
5050: 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
5060: 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
5070: 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
5080: 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
5090: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
50a0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
50b0: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
50c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
50d0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
50e0: 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
50f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
5100: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5110: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
5120: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
5130: 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
5140: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
5150: 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
5160: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
5170: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
5180: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
5190: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
51b0: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
51c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
51d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
51e0: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
51f0: 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
5200: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
5210: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
5220: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5230: 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
5240: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
5250: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e  chitecture name.
5260: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
5270: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
5280: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
5290: 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69  eName(Path.Combi
52a0: 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  ne(Path.Combine(
52b0: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
52c0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
52d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
52e0: 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d  , SQLITE_DLL));.
52f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
5300: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
5310: 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
5320: 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68  name based on th
5330: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
5340: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20  itecture name.. 
5350: 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e           // is n
5360: 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73  ot found, try us
5370: 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74  ing the associat
5380: 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  ed platform name
5390: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
53a0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
53b0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
53c0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
53d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
53e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
53f0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
5400: 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61  tempt to transla
5410: 74 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  te the processor
5420: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
5430: 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
5440: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66    //       platf
5450: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
5460: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5470: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
5480: 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d  g platformName =
5490: 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
54a0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
54b0: 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
54c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
54d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
54e0: 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
54f0: 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  d to translate t
5500: 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
5510: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
5520: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
5540: 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d  (platformName ==
5550: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5560: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5570: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
5580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5590: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
55a0: 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20   // NOTE: Build 
55b0: 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e  the full path an
55c0: 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  d file name for 
55d0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
55e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
55f0: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
5600: 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74  y using the plat
5610: 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
5620: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5630: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
5640: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
5650: 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d  ileName(Path.Com
5660: 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  bine(Path.Combin
5670: 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  e(directory,..  
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5690: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 53  platformName), S
56a0: 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a  QLITE_DLL));....
56b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
56c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
56d0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
56e0: 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78  file does not ex
56f0: 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69 6e 67  ist, skip trying
5700: 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20   to load it...  
5710: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
5720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5730: 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66   (!File.Exists(f
5740: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5760: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
5770: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
5780: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
5790: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
57a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
57c0: 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
57d0: 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
57e0: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
57f0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
5800: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5810: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
5820: 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20   from...        
5830: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 4e        //..#if !N
5840: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
5850: 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
5870: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
5880: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
58b0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
58d0: 54 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e  Trying to load n
58e0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
58f0: 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22  rary \"{0}\"..."
5900: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5910: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 3b       fileName));
5920: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
5930: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5940: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
5950: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
5960: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
5970: 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77  library.  This w
5980: 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20  ill either..    
5990: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
59a0: 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69     return a vali
59b0: 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
59c0: 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49  handle, return I
59d0: 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20  ntPtr.Zero,..   
59e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
59f0: 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20      or throw an 
5a00: 65 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20  exception...    
5a10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5a30: 72 6e 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  rn LoadLibrary(f
5a40: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
5a50: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
5a60: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
5a70: 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
5a80: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
5a90: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
5aa0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
5ab0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
5ac0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
5ad0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
5ae0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
5af0: 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
5b00: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b30: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5b40: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
5b50: 20 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65   First, grab the
5b60: 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f   last Win32 erro
5b70: 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r number...     
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
5b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ba0: 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72     int lastError
5bb0: 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61   = Marshal.GetLa
5bc0: 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 0d  stWin32Error();.
5bd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5be0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
5c00: 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77  TE: Show where w
5c10: 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  e failed to load
5c20: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
5c30: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
5c40: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
5c50: 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e  ibrary from alon
5c60: 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32  g with the Win32
5c70: 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d   error code and.
5c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5c90: 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65     //       exce
5ca0: 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  ption informatio
5cb0: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
5cc0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5cd0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
5ce0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
5cf0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d10: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
5d20: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 20 20 20 22 46 61 69 6c 65 64 20 74 6f 20       "Failed to 
5d50: 6c 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69  load native SQLi
5d60: 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d  te library \"{0}
5d70: 5c 22 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  \" " +..        
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28                "(
5d90: 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
5da0: 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
5dd0: 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
5de0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
5df0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5e00: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
5e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
5e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5e50: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
5e60: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5e70: 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
5e80: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 7d  r.Zero;..      }
5e90: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
5ea0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
5eb0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f00: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
5f10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5f20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a  MEWORK..    //..
5f30: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
5f40: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
5f50: 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20   Framework, the 
5f60: 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
5f70: 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20  ssembly must..  
5f80: 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73    //       be us
5f90: 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72  ed because it pr
5fa0: 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77  ovides several w
5fb0: 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e  orkarounds to .N
5fc0: 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
5fd0: 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f  //       Framewo
5fe0: 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  rk limitations i
5ff0: 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f  mportant for pro
6000: 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  per operation of
6010: 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f   the core..    /
6020: 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44  /       System.D
6030: 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74  ata.SQLite funct
6040: 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62  ionality (e.g. b
6050: 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e  eing able to bin
6060: 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  d..    //       
6070: 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68  parameters and h
6080: 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c  andle column val
6090: 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74  ues of types Int
60a0: 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d  64 and Double)..
60b0: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
60c0: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
60d0: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
60e0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
60f0: 30 38 38 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  088.dll";..#elif
6100: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
6110: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
6120: 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
6130: 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72  , if the standar
6140: 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
6150: 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65   is enabled, use
6160: 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
6170: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
6180: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
6190: 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d  LL = "sqlite3";.
61a0: 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52  .#elif USE_INTER
61b0: 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 20 20 2f 2f  OP_DLL..      //
61c0: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f  ..    // NOTE: O
61d0: 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65  therwise, if the
61e0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 69   native SQLite i
61f0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
6200: 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20  is enabled,..   
6210: 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 69 74   //       use it
6220: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
6230: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
6240: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
6250: 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f  = "SQLite.Intero
6260: 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a  p.dll";..#else..
6270: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
6280: 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73  OTE: Finally, as
6290: 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69  sume that the mi
62a0: 78 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c  xed-mode assembl
62b0: 79 20 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e  y is being used.
62c0: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
62d0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
62e0: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
62f0: 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
6300: 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64  Lite.dll";..#end
6310: 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69  if....    // Thi
6320: 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69  s section uses i
6330: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61  nterop calls tha
6340: 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78  t also fetch tex
6350: 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69  t length to opti
6360: 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e  mize conversion.
6370: 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73  ..    // When us
6380: 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
6390: 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70   dll, we can rep
63a0: 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73  lace these calls
63b0: 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c   with normal sql
63c0: 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20  ite calls and.. 
63d0: 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d     // do unoptim
63e0: 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73  ized conversions
63f0: 20 69 6e 73 74 65 61 64 20 61 66 74 65 72 77 61   instead afterwa
6400: 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  rds..    #region
6410: 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74   interop added t
6420: 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d  extlength calls.
6430: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
6440: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
6450: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6460: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
6470: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6480: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
6490: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
64a0: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
64b0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
64c0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
64d0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
64e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
64f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6500: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6510: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6520: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
6530: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
6540: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
6550: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
6560: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
6570: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6580: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6590: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
65a0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
65b0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
65c0: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
65d0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
65e0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
65f0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
6600: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6610: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6620: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6630: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6640: 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f  _decltype_intero
6650: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
6660: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
6670: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
6680: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6690: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
66a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
66b0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
66c0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
66d0: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
66e0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
66f0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
6700: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
6710: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6720: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6730: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6740: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
6750: 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  mn_name_interop(
6760: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
6770: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
6780: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
6790: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
67a0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
67b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
67c0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
67d0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e  column_name16_in
67e0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
67f0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
6800: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
6810: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6820: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6830: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6840: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
6850: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
6860: 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  gin_name_interop
6870: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6880: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
6890: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
68a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
68b0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
68c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
68d0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
68e0: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
68f0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
6900: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6910: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
6920: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
6930: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6940: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6950: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6960: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6970: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f  lumn_table_name_
6980: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6990: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
69a0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
69b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
69c0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
69d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
69e0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
69f0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
6a00: 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  able_name16_inte
6a10: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
6a20: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
6a30: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
6a40: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6a50: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6a60: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6a70: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
6a80: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f  te3_column_text_
6a90: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6aa0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
6ab0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
6ac0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6ad0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
6ae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6af0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6b00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
6b10: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
6b20: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6b30: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
6b40: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
6b50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6b60: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6b70: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6b80: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
6b90: 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rmsg_interop(Int
6ba0: 50 74 72 20 64 62 2c 20 6f 75 74 20 69 6e 74 20  Ptr db, out int 
6bb0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
6bc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6bd0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6be0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6bf0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6c00: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
6c10: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
6c20: 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
6c30: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74   int nBytes, out
6c40: 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75   IntPtr stmt, ou
6c50: 74 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  t IntPtr ptrRema
6c60: 69 6e 2c 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d  in, out int nRem
6c70: 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  ain);....    [Dl
6c80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6c90: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6ca0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6cb0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6cc0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
6cd0: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69  olumn_metadata_i
6ce0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
6cf0: 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
6d00: 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
6d10: 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
6d20: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44   out IntPtr ptrD
6d30: 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74  ataType, out Int
6d40: 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20  Ptr ptrCollSeq, 
6d50: 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c  out int notNull,
6d60: 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79   out int primary
6d70: 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74  Key, out int aut
6d80: 6f 49 6e 63 2c 20 6f 75 74 20 69 6e 74 20 64 74  oInc, out int dt
6d90: 4c 65 6e 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c  Len, out int csL
6da0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
6db0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6dc0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6dd0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6de0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
6df0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
6e00: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
6e10: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
6e20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6e30: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6e40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6e50: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
6e60: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
6e70: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
6e80: 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  p, out int len);
6e90: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
6ea0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6eb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6ec0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
6ed0: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73  sqlite3_malloc_s
6ee0: 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ize_interop(IntP
6ef0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  tr p);....#if IN
6f00: 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b  TEROP_LOG..    [
6f10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6f20: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
6f30: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6f40: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
6f50: 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
6f60: 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b  g_log_interop();
6f70: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
6f80: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
6f90: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
6fa0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
6fb0: 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  / These function
6fc0: 73 20 61 64 64 20 65 78 69 73 74 69 6e 67 20 66  s add existing f
6fd0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20  unctionality on 
6fe0: 74 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e  top of SQLite an
6ff0: 64 20 72 65 71 75 69 72 65 20 61 20 6c 69 74 74  d require a litt
7000: 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20  le effort to..  
7010: 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67    // get working
7020: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
7030: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
7040: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72  library...    #r
7050: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
7060: 64 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ded functionalit
7070: 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  y....#if !SQLITE
7080: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
7090: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
70a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
70b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
70c0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
70d0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
70e0: 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  se_interop(IntPt
70f0: 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
7100: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7110: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
7120: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7130: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
7140: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
7150: 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f  _function_intero
7160: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
7170: 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
7180: 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70   nArgs, int nTyp
7190: 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
71a0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
71b0: 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c   func, SQLiteCal
71c0: 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c  lback fstep, SQL
71d0: 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b  iteFinalCallback
71e0: 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65   ffinal, int nee
71f0: 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20  dCollSeq);....  
7200: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7210: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
7220: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7230: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
7240: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
7250: 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49  nalize_interop(I
7260: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
7270: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7280: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
7290: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
72a0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
72b0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
72c0: 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e  backup_finish_in
72d0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63  terop(IntPtr bac
72e0: 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  kup);....    [Dl
72f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7300: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
7310: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7320: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
7330: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e   sqlite3_open_in
7340: 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
7350: 38 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69 74  8Filename, SQLit
7360: 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
7370: 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72  lags, out IntPtr
7380: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
7390: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
73a0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
73b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
73c0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
73d0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f   sqlite3_open16_
73e0: 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75  interop(byte[] u
73f0: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c  tf8Filename, SQL
7400: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
7410: 20 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50   flags, out IntP
7420: 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tr db);....    [
7430: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7440: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
7450: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7460: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7470: 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  de sqlite3_reset
7480: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
7490: 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  stmt);....    [D
74a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
74b0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
74c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
74d0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68  n int sqlite3_ch
74e0: 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e  anges_interop(In
74f0: 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69  tPtr db);..#endi
7500: 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
7510: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
7520: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7530: 2f 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20  // The standard 
7540: 61 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c  api call equival
7550: 65 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76  ents of the abov
7560: 65 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d  e interop calls.
7570: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61  .    #region sta
7580: 6e 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f  ndard versions o
7590: 66 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69  f interop functi
75a0: 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  ons....#if SQLIT
75b0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69  E_STANDARD....#i
75c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
75d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
75e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
75f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7600: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7610: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7620: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7630: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7640: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7650: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7660: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
7670: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
7680: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74  qlite3_close(Int
7690: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
76a0: 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f  !INTEROP_LEGACY_
76b0: 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54  CLOSE..#if !PLAT
76c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
76d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
76e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
76f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7700: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7710: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7720: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7730: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7740: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7750: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7760: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
7770: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
7780: 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20  close_v2(IntPtr 
7790: 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20  db); /* 3.7.14+ 
77a0: 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  */..#endif....#i
77b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
77c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
77d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
77e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
77f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7800: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7810: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7820: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7830: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7840: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7850: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
7860: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
7870: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
7880: 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  nction(IntPtr db
7890: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
78a0: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
78b0: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
78c0: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
78d0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
78e0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
78f0: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
7900: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a  lback ffinal);..
7910: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7920: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7930: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7940: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7950: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7960: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7970: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7980: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7990: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
79a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
79b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
79c0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
79d0: 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  de sqlite3_final
79e0: 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29  ize(IntPtr stmt)
79f0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7a00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7a10: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7a20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
7a30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7a40: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7a50: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
7a60: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
7a70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7a80: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7a90: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7aa0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
7ab0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
7ac0: 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50  ckup_finish(IntP
7ad0: 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23  tr backup);....#
7ae0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7af0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7b00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7b10: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7b20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7b30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7b40: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7b50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7b60: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7b70: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7b80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7b90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
7ba0: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e  sqlite3_reset(In
7bb0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
7bc0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7bd0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7be0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7bf0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7c00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7c10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7c20: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7c30: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7c40: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7c50: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7c60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7c70: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
7c80: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
7c90: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
7ca0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
7cb0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7cc0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7cd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7ce0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7cf0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7d00: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7d10: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7d20: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7d30: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7d40: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7d50: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7d60: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
7d70: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
7d80: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
7d90: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
7da0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7db0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7dc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7dd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7de0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7df0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7e00: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7e10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7e20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7e30: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7e40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7e50: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
7e60: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
7e70: 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
7e80: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
7e90: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7ea0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7eb0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7ec0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7ed0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7ee0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7ef0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
7f00: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
7f10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7f20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7f30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7f40: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
7f50: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
7f60: 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
7f70: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
7f80: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7f90: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7fa0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7fb0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7fc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7fd0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7fe0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7ff0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8000: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8010: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8020: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8030: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
8040: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
8050: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
8060: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
8070: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8080: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8090: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
80a0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
80b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
80c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
80d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
80e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
80f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8100: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8110: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
8120: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
8130: 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  umn_name(IntPtr 
8140: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
8150: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8160: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8170: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8180: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8190: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
81a0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
81b0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
81c0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
81d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
81e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
81f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8200: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
8210: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
8220: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
8230: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
8240: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8250: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8260: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8270: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8280: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8290: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
82a0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
82b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
82c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
82d0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
82e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
82f0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
8300: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
8310: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
8320: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
8330: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8340: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8350: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8360: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8370: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8380: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8390: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
83a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
83b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
83c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
83d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
83e0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
83f0: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
8400: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
8410: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
8420: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8430: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8440: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8450: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8460: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8470: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8480: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8490: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
84a0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
84b0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
84c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
84d0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
84e0: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
84f0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
8500: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
8510: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8520: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8530: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8540: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8550: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8560: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8570: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8580: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8590: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
85a0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
85b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
85c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
85d0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
85e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
85f0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
8600: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8610: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8620: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8630: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8640: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8650: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8660: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8670: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8680: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8690: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
86a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
86b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
86c0: 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20  umn_text(IntPtr 
86d0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
86e0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
86f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8700: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8710: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8720: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8730: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8740: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8750: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8760: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8770: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8780: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8790: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
87a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
87b0: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
87c0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
87d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
87e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
87f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8800: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8810: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8820: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8830: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8840: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8850: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8860: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8870: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8880: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
8890: 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29  rrmsg(IntPtr db)
88a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
88b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
88c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
88d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
88e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
88f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8900: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8910: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8920: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8930: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8940: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8950: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
8960: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
8970: 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c  epare(IntPtr db,
8980: 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
8990: 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e  t nBytes, out In
89a0: 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49  tPtr stmt, out I
89b0: 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29  ntPtr ptrRemain)
89c0: 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45  ;....#if USE_PRE
89d0: 50 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c  PARE_V2..#if !PL
89e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
89f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8a00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8a10: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8a20: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8a30: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8a40: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8a50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8a60: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8a70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8a80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8a90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8aa0: 33 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74  3_prepare_v2(Int
8ab0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70  Ptr db, IntPtr p
8ac0: 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c  Sql, int nBytes,
8ad0: 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74   out IntPtr stmt
8ae0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
8af0: 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66  Remain);..#endif
8b00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8b10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8b20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8b30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8b40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8b50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8b60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8b70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8b80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8b90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8ba0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8bb0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8bc0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62  Code sqlite3_tab
8bd0: 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61  le_column_metada
8be0: 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ta(IntPtr db, by
8bf0: 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74  te[] dbName, byt
8c00: 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74  e[] tblName, byt
8c10: 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74  e[] colName, out
8c20: 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54   IntPtr ptrDataT
8c30: 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ype, out IntPtr 
8c40: 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20  ptrCollSeq, out 
8c50: 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74  int notNull, out
8c60: 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c   int primaryKey,
8c70: 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63   out int autoInc
8c80: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
8c90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8ca0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8cb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8cc0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8cd0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8ce0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8cf0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8d00: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8d10: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8d20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8d30: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
8d40: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
8d50: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
8d60: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8d70: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8d80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8d90: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8da0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8db0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8dc0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8dd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8de0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8df0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8e00: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8e10: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
8e20: 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50  alue_text16(IntP
8e30: 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66  tr p);....#endif
8e40: 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f  ..    // SQLITE_
8e50: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
8e60: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8e70: 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74    // These funct
8e80: 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20  ions are custom 
8e90: 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69  and have no equi
8ea0: 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
8eb0: 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d  library method..
8ec0: 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74  .    // All of t
8ed0: 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f  hem are "nice to
8ee0: 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20   haves" and not 
8ef0: 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65  necessarily "nee
8f00: 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20  d to haves"...  
8f10: 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75    #region no equ
8f20: 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64  ivalent standard
8f30: 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21   method....#if !
8f40: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
8f50: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8f60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8f70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8f80: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
8f90: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  r sqlite3_contex
8fa0: 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f  t_collseq_intero
8fb0: 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
8fc0: 2c 20 6f 75 74 20 69 6e 74 20 74 79 70 65 2c 20  , out int type, 
8fd0: 6f 75 74 20 69 6e 74 20 65 6e 63 2c 20 6f 75 74  out int enc, out
8fe0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
8ff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9000: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
9010: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9020: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
9030: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f  3_context_collco
9040: 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  mpare_interop(In
9050: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
9060: 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c  te[] p1, int p1l
9070: 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69  en, byte[] p2, i
9080: 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20  nt p2len);....  
9090: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
90a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
90b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
90c0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
90d0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75  rCode sqlite3_cu
90e0: 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72  rsor_rowid_inter
90f0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
9100: 69 6e 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20  int cursor, out 
9110: 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a  long rowid);....
9120: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9130: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
9140: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9150: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
9160: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
9170: 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66  index_column_inf
9180: 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  o_interop(IntPtr
9190: 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61   db, byte[] cata
91a0: 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65  log, byte[] Inde
91b0: 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f  xName, byte[] Co
91c0: 6c 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e  lumnName, out in
91d0: 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74  t sortOrder, out
91e0: 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75   int onError, ou
91f0: 74 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69  t IntPtr Collati
9200: 6f 6e 2c 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c  on, out int coll
9210: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
9220: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9230: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
9240: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9250: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
9260: 73 65 74 61 6c 6c 5f 69 6e 74 65 72 6f 70 28 49  setall_interop(I
9270: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
9280: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9290: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
92a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
92b0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
92c0: 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69  3_table_cursor_i
92d0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
92e0: 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20  mt, int db, int 
92f0: 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d  tableRootPage);.
9300: 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
9310: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
9320: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
9330: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64  ....    // Stand
9340: 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c  ard API calls gl
9350: 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73  obal across vers
9360: 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65  ions.  There are
9370: 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73   a few instances
9380: 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c   of interop call
9390: 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65  s..    // scatte
93a0: 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74  red in here, but
93b0: 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61   they are only a
93c0: 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46  ctive when PLATF
93d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
93e0: 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64  WORK is declared
93f0: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
9400: 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61  tandard sqlite a
9410: 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21 50  pi calls..#if !P
9420: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9430: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9440: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9450: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9460: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9470: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9480: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9490: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
94a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
94b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
94c0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
94d0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
94e0: 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
94f0: 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
9500: 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e     IntPtr db, in
9510: 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
9520: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9530: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9540: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9550: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9560: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9570: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9580: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9590: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
95a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
95b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
95c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
95d0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
95e0: 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
95f0: 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  nsion(..        
9600: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
9610: 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65  ] fileName, byte
9620: 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66  [] procName, ref
9630: 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b   IntPtr pError);
9640: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9650: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9660: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9670: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9680: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9690: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
96a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
96b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
96c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
96d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
96e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
96f0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
9700: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65  Code sqlite3_ove
9710: 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49  rload_function(I
9720: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
9730: 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67   zName, int nArg
9740: 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
9750: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9760: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9770: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9780: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9790: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
97a0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
97b0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
97c0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
97d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
97e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
97f0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
9800: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
9810: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9820: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9830: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9840: 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
9850: 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74  directory(uint t
9860: 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  ype, string valu
9870: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
9880: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9890: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
98a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
98b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
98c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
98d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
98e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
98f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9900: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9910: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9920: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
9930: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
9940: 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  n();....#if !PLA
9950: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9960: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9970: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9980: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9990: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
99a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
99b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
99c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
99d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
99e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
99f0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
9a00: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
9a10: 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66  number();....#if
9a20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9a30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9a40: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9a50: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9a60: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9a70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9a80: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9a90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9aa0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9ab0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9ac0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
9ad0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75  tPtr sqlite3_sou
9ae0: 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20  rceid();....#if 
9af0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9b00: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9b10: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9b20: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
9b30: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
9b40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
9b50: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
9b60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9b70: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
9b80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9b90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
9ba0: 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  Ptr sqlite3_mall
9bb0: 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  oc(int n);....#i
9bc0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9bd0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9be0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9bf0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9c00: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9c10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9c20: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9c30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9c40: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
9c50: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9c60: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
9c70: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65  ntPtr sqlite3_re
9c80: 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20  alloc(IntPtr p, 
9c90: 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
9ca0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9cb0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9cc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9cd0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9ce0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9cf0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9d00: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
9d10: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9d20: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
9d30: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9d40: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
9d50: 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e   sqlite3_free(In
9d60: 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
9d70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9d80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9d90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9da0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
9db0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
9dc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
9dd0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
9de0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9df0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
9e00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9e10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9e20: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9e30: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74  ite3_open_v2(byt
9e40: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
9e50: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c  , out IntPtr db,
9e60: 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73   SQLiteOpenFlags
9e70: 45 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e 74 50  Enum flags, IntP
9e80: 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20  tr vfs);....#if 
9e90: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9ea0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9eb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9ec0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
9ed0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
9ee0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
9ef0: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
9f00: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
9f10: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9f20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9f30: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
9f40: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
9f50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9f60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9f70: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
9f80: 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  de sqlite3_open1
9f90: 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  6(string fileNam
9fa0: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62  e, out IntPtr db
9fb0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9fc0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9fd0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9fe0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9ff0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a000: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a010: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a020: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a030: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a040: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a050: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a060: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
a070: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e  te3_interrupt(In
a080: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
a090: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a0a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a0b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a0c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a0d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a0e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a0f0: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
a100: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a110: 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c  n long sqlite3_l
a120: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
a130: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65  (IntPtr db);..#e
a140: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
a150: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a160: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a170: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a180: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a190: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a1a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a1b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a1c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a1d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
a1e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a1f0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
a200: 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74  ite3_changes(Int
a210: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
a220: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a230: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a240: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a250: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a260: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a270: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a280: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
a290: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a2a0: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
a2b0: 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65  mory_used();..#e
a2c0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
a2d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a2e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a2f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a300: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a310: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a320: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a330: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a340: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
a350: 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
a360: 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72  _highwater(int r
a370: 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64  esetFlag);..#end
a380: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
a390: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a3a0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a3b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a3c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a3d0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a3e0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a3f0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a400: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a410: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a420: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a430: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
a440: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
a450: 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
a460: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a470: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a480: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a490: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a4a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a4b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a4c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a4d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a4e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a4f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a500: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
a510: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
a520: 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
a530: 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
a540: 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
a550: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a560: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a570: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a580: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a590: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a5a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a5b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a5c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a5d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a5e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a5f0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
a600: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
a610: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e  te3_bind_blob(In
a620: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
a630: 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c  ndex, Byte[] val
a640: 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
a650: 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74  ntPtr nTransient
a660: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a670: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a680: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a690: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a6a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a6b0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a6c0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a6d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a6e0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
a6f0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
a700: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49  e3_bind_double(I
a710: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
a720: 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61  index, double va
a730: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
a740: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a750: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a760: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a770: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a780: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a790: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a7a0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a7b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a7c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a7d0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a7e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a7f0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
a800: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
a810: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
a820: 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76  int index, int v
a830: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  alue);....    //
a840: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
a850: 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
a860: 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
a870: 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65  ind_int"; howeve
a880: 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
a890: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
a8a0: 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
a8b0: 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
a8c0: 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65  ed (32-bit) inte
a8d0: 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
a8e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a8f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a910: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
a920: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
a930: 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e  ind_int", Callin
a940: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a950: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a960: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a970: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a980: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
a990: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
a9a0: 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65  _bind_int")]..#e
a9b0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
a9c0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a9d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
a9e0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
a9f0: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
aa00: 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20  int index, uint 
aa10: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
aa20: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
aa30: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
aa40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
aa50: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
aa60: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
aa70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
aa80: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
aa90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
aaa0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
aab0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
aac0: 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
aad0: 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20  int index, long 
aae0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
aaf0: 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  ...    //..    /
ab00: 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61  / NOTE: This rea
ab10: 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22  lly just calls "
ab20: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
ab30: 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74  64"; however, it
ab40: 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f   has the..    //
ab50: 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74         correct t
ab60: 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f  ype signature fo
ab70: 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f  r an unsigned lo
ab80: 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65  ng (64-bit) inte
ab90: 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
aba0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
abb0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
abc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
abd0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
abe0: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
abf0: 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c  ind_int64", Call
ac00: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ac10: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ac20: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
ac30: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ac40: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
ac50: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
ac60: 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72  nd_uint64(IntPtr
ac70: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
ac80: 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  , ulong value);.
ac90: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
aca0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
acb0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
acc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
acd0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ace0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
acf0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ad00: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
ad10: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ad20: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ad30: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ad40: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
ad50: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
ad60: 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e  te3_bind_null(In
ad70: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
ad80: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
ad90: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ada0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
adb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
adc0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
add0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ade0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
adf0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ae00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ae10: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ae20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ae30: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
ae40: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
ae50: 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74  e3_bind_text(Int
ae60: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
ae70: 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  dex, byte[] valu
ae80: 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
ae90: 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
aea0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
aeb0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
aec0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
aed0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
aee0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
aef0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
af00: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
af10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
af20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
af30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
af40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
af50: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
af60: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
af70: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
af80: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
af90: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
afa0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
afb0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
afc0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
afd0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
afe0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
aff0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b000: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b010: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
b020: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b030: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
b040: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
b050: 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20  er_index(IntPtr 
b060: 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  stmt, byte[] str
b070: 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
b080: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b090: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b0a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b0b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b0c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b0d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b0e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b100: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b110: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b120: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b130: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f  qlite3_column_co
b140: 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
b150: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b160: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b170: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b180: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b190: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b1a0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b1b0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b1c0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b1d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b1e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b1f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b200: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
b210: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74  rCode sqlite3_st
b220: 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ep(IntPtr stmt);
b230: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b240: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b250: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b260: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b270: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b280: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b290: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
b2a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b2b0: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
b2c0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
b2d0: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
b2e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
b2f0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
b300: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b310: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b320: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b330: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b340: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b350: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b360: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b370: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b380: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b390: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b3a0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b3b0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
b3c0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
b3d0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
b3e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b3f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b400: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b410: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
b420: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b430: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
b440: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
b450: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b460: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
b470: 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74  column_int64(Int
b480: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
b490: 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
b4a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b4b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b4c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b4d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b4e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b4f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b500: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b510: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b520: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b530: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b540: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b550: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b560: 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74  _column_blob(Int
b570: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
b580: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
b590: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b5a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b5b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b5c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b5d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b5e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b5f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
b600: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b610: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
b620: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b630: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
b640: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
b650: 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  es(IntPtr stmt, 
b660: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
b670: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b680: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b690: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b6a0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b6b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b6c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b6d0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b6e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b6f0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b700: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b710: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b720: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
b730: 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  mn_bytes16(IntPt
b740: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b750: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
b760: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b770: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
b780: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b790: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
b7a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b7b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
b7c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b7d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b7e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
b7f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b800: 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
b810: 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
b820: 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
b830: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
b840: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b850: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b860: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b870: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b880: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b890: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b8a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b8b0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b8c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b8d0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b8e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b8f0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
b900: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
b910: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49  eate_collation(I
b920: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
b930: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54   strName, int nT
b940: 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
b950: 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74  er, SQLiteCollat
b960: 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69  ion func);....#i
b970: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b980: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b990: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b9a0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
b9b0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b9c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
b9d0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
b9e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b9f0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
ba00: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
ba10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
ba20: 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  nt sqlite3_aggre
ba30: 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74  gate_count(IntPt
ba40: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
ba50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ba60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ba70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ba80: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ba90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
baa0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
bab0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
bac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bad0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
bae0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
baf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bb00: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
bb10: 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
bb20: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
bb30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bb40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bb50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bb60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bb70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bb80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bb90: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bbb0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bbc0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bbd0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
bbe0: 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
bbf0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
bc00: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
bc10: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
bc20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bc30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
bc40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
bc50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
bc60: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
bc70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bc80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
bc90: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
bca0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bcb0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
bcc0: 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  e_bytes16(IntPtr
bcd0: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
bce0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bcf0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bd00: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bd10: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bd20: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bd30: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bd40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bd50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75  tatic extern dou
bd60: 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ble sqlite3_valu
bd70: 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  e_double(IntPtr 
bd80: 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
bd90: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
bda0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
bdb0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bdc0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
bdd0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
bde0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
bdf0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
be00: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
be10: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
be20: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
be30: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
be40: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
be50: 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b  e_int(IntPtr p);
be60: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
be70: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
be80: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
be90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
bea0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
beb0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
bec0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
bed0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bee0: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
bef0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
bf00: 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65  4(IntPtr p);..#e
bf10: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
bf20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bf30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bf40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bf50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bf60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bf70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bf80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bf90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bfa0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bfb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bfc0: 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
bfd0: 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61  inity sqlite3_va
bfe0: 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20  lue_type(IntPtr 
bff0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
c000: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c010: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c020: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c030: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c040: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c050: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c060: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c070: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c080: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c090: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c0a0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c0b0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
c0c0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c0d0: 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
c0e0: 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
c0f0: 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
c100: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c110: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c120: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c130: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c140: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c150: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c160: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
c170: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c180: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
c190: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
c1a0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c1b0: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
c1c0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
c1d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c1e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c1f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c200: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c210: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c220: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c230: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c240: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c250: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c260: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c270: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
c280: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
c290: 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e  error(IntPtr con
c2a0: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  text, byte[] str
c2b0: 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  Err, int nLen);.
c2c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c2d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c2e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c2f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c300: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c310: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c320: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c330: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c340: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c350: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c360: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c370: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c380: 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f  _result_error_co
c390: 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  de(IntPtr contex
c3a0: 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  t, SQLiteErrorCo
c3b0: 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  de value);....#i
c3c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c3d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c3e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c3f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c400: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c410: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c420: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
c430: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c440: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
c450: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c460: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
c470: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
c480: 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
c490: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
c4a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c4b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c4c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c4d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c4e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c4f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c500: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c510: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c520: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c530: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c540: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c550: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c560: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e  3_result_error_n
c570: 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74  omem(IntPtr cont
c580: 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
c590: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c5a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c5b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c5c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c5d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c5e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c5f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c600: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c610: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c620: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c630: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
c640: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
c650: 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lue(IntPtr conte
c660: 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65  xt, IntPtr value
c670: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
c680: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c690: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
c6a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
c6b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c6c0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
c6d0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
c6e0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c6f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c700: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
c710: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c720: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
c730: 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62  te3_result_zerob
c740: 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
c750: 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  xt, int nLen);..
c760: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c770: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c780: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c790: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c7a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c7b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c7c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c7d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c7e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c7f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c800: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c810: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
c820: 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74  result_int(IntPt
c830: 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76  r context, int v
c840: 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
c850: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c860: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c870: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c880: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c890: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c8a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c8b0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c8c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
c8d0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
c8e0: 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  lt_int64(IntPtr 
c8f0: 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61  context, long va
c900: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
c910: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c920: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c930: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c940: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c950: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c960: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c970: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c980: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c990: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c9a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c9b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c9c0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
c9d0: 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74  esult_null(IntPt
c9e0: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
c9f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ca00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ca10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ca20: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ca30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ca40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ca50: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
ca60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ca70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
ca80: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
ca90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
caa0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
cab0: 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ult_text(IntPtr 
cac0: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
cad0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  value, int nLen,
cae0: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
caf0: 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
cb00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cb10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cb20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cb30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cb40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cb50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cb60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cb70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cb80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cb90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cba0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
cbb0: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
cbc0: 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72  e_context(IntPtr
cbd0: 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42   context, int nB
cbe0: 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ytes);....#if !P
cbf0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cc00: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
cc10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cc20: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
cc30: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cc40: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cc50: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
cc60: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
cc70: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cc80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cc90: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
cca0: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
ccb0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ccc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ccd0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
cce0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
ccf0: 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  xt16(IntPtr stmt
cd00: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72  , int index, str
cd10: 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  ing value, int n
cd20: 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
cd30: 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
cd40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cd50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
cd60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cd70: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
cd80: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cd90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
cda0: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
cdb0: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
cdc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
cdd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cde0: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
cdf0: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
ce00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
ce10: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ce20: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
ce30: 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49  result_error16(I
ce40: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
ce50: 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
ce60: 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
ce70: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ce80: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ce90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
cea0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
ceb0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
cec0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ced0: 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
cee0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
cef0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cf00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cf10: 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
cf20: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
cf30: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
cf40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
cf50: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
cf60: 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49  _result_text16(I
cf70: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
cf80: 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
cf90: 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
cfa0: 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
cfb0: 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45  #if INTEROP_CODE
cfc0: 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  C..#if !PLATFORM
cfd0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cfe0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cff0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d000: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d010: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d020: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d030: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d040: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d050: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d060: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d070: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
d080: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28  ode sqlite3_key(
d090: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
d0a0: 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
d0b0: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
d0c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d0d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d0e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d0f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d100: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d110: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d130: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d140: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d150: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d160: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
d170: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
d180: 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c  rekey(IntPtr db,
d190: 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74   byte[] key, int
d1a0: 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69   keylen);..#endi
d1b0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
d1c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d1d0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d1e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d1f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d200: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d210: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d220: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d230: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d240: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d250: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d260: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d270: 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
d280: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
d290: 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b  teUpdateCallback
d2a0: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
d2b0: 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
d2c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d2d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d2e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d2f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d300: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d310: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d320: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d330: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d340: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d350: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d360: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d370: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74  r sqlite3_commit
d380: 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
d390: 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c   SQLiteCommitCal
d3a0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
d3b0: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
d3c0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d3d0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d3e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d3f0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d400: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d410: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d420: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d430: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d440: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d450: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d460: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d470: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74  IntPtr sqlite3_t
d480: 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20  race(IntPtr db, 
d490: 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62  SQLiteTraceCallb
d4a0: 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
d4b0: 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20   pvUser);....   
d4c0: 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
d4d0: 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73  3_config() takes
d4e0: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
d4f0: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
d500: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
d510: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
d520: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
d530: 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20  ible calls that 
d540: 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d  we want to use..
d550: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d560: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d570: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d580: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
d590: 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
d5a0: 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
d5b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d5c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d5d0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d5e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d5f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
d600: 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
d610: 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
d620: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d630: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d640: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
d650: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e  sqlite3_config_n
d660: 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  one(SQLiteConfig
d670: 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a  OpsEnum op);....
d680: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d690: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d6a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d6b0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
d6c0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
d6d0: 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
d6e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d6f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d700: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d710: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d720: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
d730: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
d740: 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
d750: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d760: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
d770: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
d780: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e  qlite3_config_in
d790: 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  t(SQLiteConfigOp
d7a0: 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61  sEnum op, int va
d7b0: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
d7c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d7d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d7e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d7f0: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
d800: 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
d810: 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
d820: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
d830: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
d840: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
d850: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d860: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
d870: 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
d880: 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
d890: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d8a0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
d8b0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
d8c0: 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74  config_log(SQLit
d8d0: 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
d8e0: 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c  p, SQLiteLogCall
d8f0: 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
d900: 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
d910: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d920: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d930: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d940: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d950: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d960: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d970: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d980: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d990: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d9a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d9b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d9c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f  ntPtr sqlite3_ro
d9d0: 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50  llback_hook(IntP
d9e0: 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c  tr db, SQLiteRol
d9f0: 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75  lbackCallback fu
da00: 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
da10: 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
da20: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
da30: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
da40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
da50: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
da60: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
da70: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
da80: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
da90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
daa0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
dab0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
dac0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
dad0: 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65  qlite3_db_handle
dae0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
daf0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
db00: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
db10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
db20: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
db30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
db40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
db50: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
db60: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
db70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
db80: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
db90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
dba0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
dbb0: 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e  3_db_filename(In
dbc0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
dbd0: 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
dbe0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
dbf0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
dc00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dc10: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
dc20: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
dc30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
dc40: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
dc50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dc60: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
dc70: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dc80: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
dc90: 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
dca0: 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
dcb0: 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
dcc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
dcd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
dce0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dcf0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
dd00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
dd10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
dd20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
dd30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
dd40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
dd50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
dd60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
dd70: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
dd80: 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
dd90: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
dda0: 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
ddb0: 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
ddc0: 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f 75 74  Ptr pvParam, out
ddd0: 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
dde0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ddf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
de00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
de10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
de20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
de30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
de40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
de50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
de60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
de70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
de80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
de90: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
dea0: 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
deb0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
dec0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ded0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
dee0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
def0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
df00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
df10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
df20: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
df30: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
df40: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
df50: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
df60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
df70: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
df80: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
df90: 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
dfa0: 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
dfb0: 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
dfc0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
dfd0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
dfe0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
dff0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e000: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e010: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e020: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e030: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e040: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e050: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e060: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e070: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e080: 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
e090: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
e0a0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e0b0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e0c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e0d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e0e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e0f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e100: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e110: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e120: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e130: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e140: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e150: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e160: 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
e170: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
e180: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e190: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e1a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e1b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e1c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e1d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e1e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e1f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e200: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e210: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e220: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e230: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
e240: 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
e250: 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
e260: 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
e270: 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
e280: 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
e290: 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
e2a0: 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
e2b0: 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
e2c0: 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
e2d0: 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
e2e0: 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
e2f0: 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
e300: 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
e310: 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20  e string, and.. 
e320: 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20     // depend on 
e330: 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f  the caller to fo
e340: 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e  rmat the string.
e350: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e360: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e370: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e380: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e390: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e3a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e3b0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e3c0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e3d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e3e0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e3f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e400: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
e410: 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  log(SQLiteErrorC
e420: 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79  ode iErrCode, by
e430: 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a  te[] zFormat);..
e440: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e450: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e460: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e470: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e480: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e490: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e4a0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e4b0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e4c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e4d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e4e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e4f0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e500: 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  de sqlite3_file_
e510: 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64  control(IntPtr d
e520: 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d  b, byte[] zDbNam
e530: 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
e540: 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20  r pArg);....#if 
e550: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
e560: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e580: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
e590: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
e5a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e5b0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e5c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e5d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e5e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e5f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
e600: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  Ptr sqlite3_back
e610: 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64  up_init(IntPtr d
e620: 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44  estDb, byte[] zD
e630: 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20  estName, IntPtr 
e640: 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d  sourceDb, byte[]
e650: 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a   zSourceName);..
e660: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e670: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e680: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e690: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e6a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e6b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e6c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e6d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e6e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e6f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e700: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e710: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e720: 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
e730: 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61  p_step(IntPtr ba
e740: 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29  ckup, int nPage)
e750: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e760: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e770: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e780: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e790: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e7a0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e7b0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e7c0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e7d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e7e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e7f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e800: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
e810: 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69  3_backup_remaini
e820: 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ng(IntPtr backup
e830: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e840: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e850: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e860: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e870: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e880: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e890: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e8a0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e8b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e8c0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e8d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e8e0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
e8f0: 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f  e3_backup_pageco
e900: 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75  unt(IntPtr backu
e910: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
e920: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e930: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e940: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e950: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e960: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e970: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e980: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e990: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e9a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e9b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e9c0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
e9d0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
e9e0: 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74  declare_vtab(Int
e9f0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
ea00: 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  SQL);....#if !PL
ea10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ea20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ea30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ea40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ea50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ea60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ea70: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ea80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ea90: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
eaa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
eab0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
eac0: 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
ead0: 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20  (IntPtr format, 
eae0: 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20  __arglist);..   
eaf0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
eb00: 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49     // SQLite API
eb10: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20   calls that are 
eb20: 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c  provided by "wel
eb30: 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69  l-known" extensi
eb40: 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20  ons that may be 
eb50: 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20  statically..    
eb60: 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74  // linked with t
eb70: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
eb80: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75  ative library cu
eb90: 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d  rrently in use..
eba0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74  .    #region ext
ebb0: 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70  ension sqlite ap
ebc0: 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54  i calls..#if INT
ebd0: 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
ebe0: 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  LE..#if !PLATFOR
ebf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ec00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ec10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ec20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ec30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ec40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ec50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ec60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ec70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ec80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ec90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
eca0: 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
ecb0: 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  sable_module(Int
ecc0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
ecd0: 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33  ame, ref sqlite3
ece0: 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  _module module, 
ecf0: 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
ed00: 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ta, xDestroyModu
ed10: 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le xDestroy);...
ed20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ed30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ed40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ed50: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ed60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ed70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ed80: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ed90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
eda0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
edb0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
edc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
edd0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64  n void sqlite3_d
ede0: 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e  ispose_module(In
edf0: 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a  tPtr pModule);..
ee00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
ee10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ee70: 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20   #region sqlite 
ee80: 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c  interop api call
ee90: 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  s (.NET Compact 
eea0: 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d  Framework only).
eeb0: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
eec0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
eed0: 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
eee0: 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RD..    [DllImpo
eef0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ef00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ef10: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
ef20: 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
ef30: 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72  sert_rowid_inter
ef40: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65  op(IntPtr db, re
ef50: 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a  f long rowId);..
ef60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ef70: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
ef80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ef90: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
efa0: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
efb0: 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c  ed_interop(ref l
efc0: 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
efd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
efe0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
eff0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f000: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
f010: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
f020: 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
f030: 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
f040: 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
f050: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f060: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
f070: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f080: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
f090: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
f0a0: 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
f0b0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
f0c0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
f0d0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
f0e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f0f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
f100: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f110: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f120: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f130: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
f140: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
f150: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
f160: 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
f170: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f180: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
f190: 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
f1a0: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
f1b0: 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74  erop")]..    int
f1c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f1d0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
f1e0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
f1f0: 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  _uint64_interop(
f200: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
f210: 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e   index, ref ulon
f220: 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
f230: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f240: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f250: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f260: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
f270: 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
f280: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f290: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f2a0: 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  out double value
f2b0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
f2c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f2d0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f2e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
f2f0: 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
f300: 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  n_int64_interop(
f310: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
f320: 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e 67   index, out long
f330: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
f340: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f350: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
f360: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f370: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
f380: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
f390: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
f3a0: 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  out double value
f3b0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
f3c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f3d0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f3e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
f3f0: 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
f400: 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
f410: 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49 6e 74  ntPtr p, out Int
f420: 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
f430: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f440: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f450: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f460: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
f470: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
f480: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
f490: 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75  context, ref dou
f4a0: 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
f4b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f4c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f4d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f4e0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
f4f0: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
f500: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
f510: 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
f520: 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
f530: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f540: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f550: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f560: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
f570: 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
f580: 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
f590: 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
f5a0: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
f5b0: 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70  r name, IntPtr p
f5c0: 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72  Module, int iVer
f5d0: 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43  sion, xCreate xC
f5e0: 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
f5f0: 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
f600: 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  t, xBestIndex xB
f610: 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f  estIndex, xDisco
f620: 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
f630: 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  t,..        xDes
f640: 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78  troy xDestroy, x
f650: 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f  Open xOpen, xClo
f660: 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74  se xClose, xFilt
f670: 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20  er xFilter,..   
f680: 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74       xNext xNext
f690: 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f  , xEof xEof, xCo
f6a0: 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52  lumn xColumn, xR
f6b0: 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70  owId xRowId, xUp
f6c0: 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20  date xUpdate,.. 
f6d0: 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42         xBegin xB
f6e0: 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e  egin, xSync xSyn
f6f0: 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  c, xCommit xComm
f700: 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  it, xRollback xR
f710: 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
f720: 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20    xFindFunction 
f730: 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78  xFindFunction, x
f740: 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20  Rename xRename, 
f750: 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
f760: 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  point,..        
f770: 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
f780: 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  e, xRollbackTo x
f790: 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50  RollbackTo, IntP
f7a0: 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d  tr pClientData,.
f7b0: 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
f7c0: 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
f7d0: 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
f7e0: 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
f7f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f800: 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
f810: 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
f820: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
f830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f880: 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
f890: 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
f8a0: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
f8b0: 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
f8c0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f8d0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
f8e0: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
f8f0: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
f900: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f910: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
f920: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
f930: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
f940: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
f950: 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
f960: 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
f970: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
f980: 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
f990: 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
f9a0: 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
f9b0: 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
f9c0: 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
f9d0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
f9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
fa30: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fa40: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fa50: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
fa60: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
fa70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
fa80: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
fa90: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
faa0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fab0: 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
fac0: 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
fad0: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
fae0: 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
faf0: 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
fb00: 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
fb10: 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
fb20: 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
fb30: 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
fb40: 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
fb50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
fba0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
fbb0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
fbc0: 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
fbd0: 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
fbe0: 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
fbf0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
fc00: 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
fc10: 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
fc20: 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64  rorCode xBestInd
fc30: 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ex(..        Int
fc40: 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
fc50: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
fc60: 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
fc70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fcc0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fcd0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fce0: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
fcf0: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
fd00: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
fd10: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
fd20: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
fd30: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
fd40: 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
fd50: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
fd60: 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
fd70: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
fd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
fdd0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fde0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
fdf0: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
fe00: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
fe10: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
fe20: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
fe30: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
fe40: 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
fe50: 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  roy(..        In
fe60: 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
fe70: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
fe80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
feb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fec0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
fed0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
fee0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
fef0: 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
ff00: 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
ff10: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ff20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
ff30: 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
ff40: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
ff50: 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  pen(..        In
ff60: 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
ff70: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
ff80: 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
ff90: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
fff0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10000 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
10010 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
10020 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
10030 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10040 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
10050 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
10060 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
10070 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
10080 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
10090 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
100f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10100 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
10110 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
10120 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
10130 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10140 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
10150 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
10160 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
10170 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
10180 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
10190 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78  .        int idx
101a0 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Num,..        In
101b0 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20  tPtr idxStr,..  
101c0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
101d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
101e0 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  argv..    );....
101f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10240 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10250 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10260 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
10270 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
10280 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
10290 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
102a0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
102b0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
102c0 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a  rorCode xNext(..
102d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
102e0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
102f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10340 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
10350 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10360 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
10370 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
10380 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
10390 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
103a0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
103b0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45   delegate int xE
103c0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  of(..        Int
103d0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
103e0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
103f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10430 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
10440 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10450 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
10460 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
10470 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
10480 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10490 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
104a0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
104b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
104c0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
104d0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
104e0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
104f0 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
10500 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
10510 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10560 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
10570 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10580 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10590 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
105a0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
105b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
105c0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
105d0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
105e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
105f0 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
10600 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
10610 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
10620 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
10630 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
10640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10680 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
10690 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
106a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
106b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
106c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
106d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
106e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
106f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
10700 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
10710 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  date(..        I
10720 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
10730 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
10740 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
10750 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
10760 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
10770 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
10780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
107d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
107e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
107f0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
10800 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
10810 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10820 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
10830 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
10840 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10850 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
10860 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
10870 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
10880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
108d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
108e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
108f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
10900 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
10910 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10920 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
10930 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
10940 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
10950 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
10960 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
10970 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
10980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
109d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
109e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
109f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
10a00 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
10a10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10a20 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
10a30 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
10a40 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
10a50 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
10a60 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
10a70 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
10ad0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10ae0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10af0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
10b00 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
10b10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10b20 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
10b30 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
10b40 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
10b50 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
10b60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
10b70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
10b80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10bd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10be0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10bf0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
10c00 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
10c10 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
10c20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
10c30 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
10c40 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e  elegate int xFin
10c50 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
10c60 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
10c70 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e  ,..        int n
10c80 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Arg,..        In
10c90 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
10ca0 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
10cb0 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
10cc0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
10cd0 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d  ntPtr pUserData.
10ce0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
10cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
10d40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10d50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10d60 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
10d70 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
10d80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10d90 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
10da0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
10db0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
10dc0 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
10dd0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
10de0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
10df0 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d  tr zNew..    );.
10e00 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e50 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
10e60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10e70 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
10e80 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
10e90 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
10ea0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10eb0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
10ec0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
10ed0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
10ee0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
10ef0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
10f00 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
10f10 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
10f20 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
10f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10f80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10f90 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
10fa0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
10fb0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
10fc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
10fd0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
10fe0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
10ff0 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
11000 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
11010 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
11020 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
11030 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
11040 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11090 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
110a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
110b0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
110c0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
110d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
110e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
110f0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
11100 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
11110 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
11120 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
11130 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
11140 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
11150 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
11160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
111b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
111c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
111d0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
111e0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
111f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11200 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
11210 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
11220 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
11230 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  yModule(IntPtr p
11240 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65  ClientData);..#e
11250 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
11260 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
11270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
112c0 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74  region Native St
112d0 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e  ructures..#if IN
112e0 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
112f0 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  BLE..    [Struct
11300 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
11310 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
11320 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
11330 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
11340 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
11350 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56     public int iV
11360 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
11370 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20   public xCreate 
11380 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20  xCreate;..      
11390 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63    public xConnec
113a0 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
113b0 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73       public xBes
113c0 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
113d0 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  x;..        publ
113e0 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  ic xDisconnect x
113f0 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  Disconnect;..   
11400 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73       public xDes
11410 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a  troy xDestroy;..
11420 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
11430 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
11440 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f       public xClo
11450 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
11460 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74      public xFilt
11470 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
11480 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78       public xNex
11490 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20  t xNext;..      
114a0 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45    public xEof xE
114b0 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  of;..        pub
114c0 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  lic xColumn xCol
114d0 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
114e0 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77  blic xRowId xRow
114f0 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  Id;..        pub
11500 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64  lic xUpdate xUpd
11510 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
11520 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
11530 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  in;..        pub
11540 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
11550 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
11560 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
11570 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
11580 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  c xRollback xRol
11590 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  lback;..        
115a0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
115b0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
115c0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
115d0 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  lic xRename xRen
115e0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ame;..        /*
115f0 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f   The methods abo
11600 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f  ve are in versio
11610 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74  n 1 of the sqlit
11620 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
11630 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54      * object.  T
11640 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66  hose below are f
11650 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  or version 2 and
11660 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20   greater. */..  
11670 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61        public xSa
11680 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
11690 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
116a0 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65  lic xRelease xRe
116b0 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  lease;..        
116c0 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
116d0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
116e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
116f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11730 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11740 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
11750 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
11760 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
11770 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
11780 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
11790 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
117a0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d  IntPtr pModule;.
117b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
117c0 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20  int nRef; /* NO 
117d0 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a  LONGER USED */..
117e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
117f0 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a  ntPtr zErrMsg;..
11800 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11850 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11860 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
11870 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
11880 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
11890 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
118a0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
118b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
118c0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
118d0 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
118e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
118f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11930 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
11940 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
11950 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
11960 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
11970 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
11980 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
11990 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
119a0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
119b0 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
119c0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
119d0 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
119e0 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
119f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
11a00 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
11a10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11a20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
11a30 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
11a40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
11a60 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
11a70 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
11a80 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
11a90 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
11aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11ab0 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
11ac0 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
11ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
11ae0 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
11af0 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
11b00 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
11b10 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
11b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
11b80 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
11b90 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
11ba0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
11bb0 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
11bc0 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
11bd0 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20   usable;..      
11be0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65    public int iTe
11bf0 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
11c00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
11c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
11c60 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
11c70 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
11c80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11c90 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
11ca0 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
11cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
11cc0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
11cd0 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
11ce0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
11cf0 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
11d00 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
11d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
11d20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
11d30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
11d40 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
11d50 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
11d60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11d70 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
11d80 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11da0 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
11db0 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
11dc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
11dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
11de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
11e30 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
11e40 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65   /* Column numbe
11e50 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
11e60 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
11e70 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
11e80 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
11e90 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
11ea0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
11eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ef0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
11f00 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
11f10 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
11f20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
11f30 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
11f40 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
11f50 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
11f60 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
11f70 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
11f80 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
11f90 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
11fa0 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
11fb0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
11fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
11fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
11fe0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
11ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12000 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
12010 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
12020 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12030 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
12040 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
12050 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
12060 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12070 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
12080 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
12090 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
120a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
120b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
120c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12100 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
12110 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
12120 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
12130 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
12140 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
12150 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12160 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
12170 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
12180 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
12190 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
121a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
12200 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
12210 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
12220 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
12230 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
12240 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
12250 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
12260 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
12270 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f    public int nCo
12280 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d  nstraint; /* Num
12290 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
122a0 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  n aConstraint */
122b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
122c0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
122d0 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
122e0 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42  blic int nOrderB
122f0 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y;..        publ
12300 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72  ic IntPtr aOrder
12310 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  By;..        /* 
12320 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20  Outputs */..    
12330 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
12340 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r aConstraintUsa
12350 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ge;..        pub
12360 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20  lic int idxNum; 
12370 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
12380 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e  ber used to iden
12390 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a  tify the index *
123a0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
123b0 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b  c string idxStr;
123c0 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e          /* Strin
123d0 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61  g, possibly obta
123e0 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
123f0 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20  3_malloc */..   
12400 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
12410 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
12420 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72  ; /* Free idxStr
12430 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
12440 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f  ree() if true */
12450 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12460 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
12470 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69  umed;  /* True i
12480 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
12490 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a  ady ordered */..
124a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64          public d
124b0 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
124c0 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65  ost; /* Estimate
124d0 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
124e0 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20  this index */.. 
124f0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
12500 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
12510 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
12520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12560 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
12570 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12580 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
12590 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
125a0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
125b0 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
125c0 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
125d0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
125e0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
125f0 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
12600 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
12610 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
12620 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
12630 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
12640 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
12650 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
12660 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
12670 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
12680 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
12690 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
126a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
126b0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
126c0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
126d0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
126e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
126f0 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
12700 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12710 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
12720 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
12730 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
12740 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12750 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
12760 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
12770 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
12780 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
12790 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
127a0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
127b0 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
127c0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
127d0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
127e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
127f0 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
12800 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
12810 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
12820 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
12830 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
12840 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
12850 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
12860 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
12870 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
12880 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
12890 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
128a0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
128b0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
128c0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
128d0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
128e0 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
128f0 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
12900 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
12910 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
12920 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
12930 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
12940 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
12950 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
12960 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
12970 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
12980 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
12990 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
129a0 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
129b0 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
129c0 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
129d0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
129e0 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
129f0 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
12a00 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d    }....#endif...
12a10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
12a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
12a70 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
12a80 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
12a90 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
12aa0 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
12ab0 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
12ac0 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
12ad0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
12ae0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
12af0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
12b00 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
12b10 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
12b20 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
12b30 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
12b40 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
12b50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12b60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12b70 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
12b80 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
12b90 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
12ba0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
12bb0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
12bc0 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
12bd0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
12be0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
12bf0 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
12c00 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
12c10 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
12c20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12c30 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
12c40 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
12c50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ca0 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
12cb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12cc0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
12cd0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
12ce0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
12cf0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
12d00 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12d10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12d60 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
12d70 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
12d80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12dd0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
12de0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
12df0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
12e00 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
12e10 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
12e20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12e30 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
12e40 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12e50 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
12e60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12e70 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
12e80 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
12e90 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
12ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12eb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12ec0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
12ed0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
12ee0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12ef0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12f00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
12f10 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
12f20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12f30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12f80 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
12f90 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
12fa0 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
12fb0 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
12fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
12fd0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
12fe0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
12ff0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13000 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13010 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
13020 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
13030 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
13050 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
13060 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
13070 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
13080 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
13090 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
130a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
130b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13100 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
13110 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
13120 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
13130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
13140 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
13150 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
13160 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
13170 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13180 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
13190 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
131a0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
131b0 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69  t(ref UnsafeNati
131c0 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
131d0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
131e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
131f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
13250 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
13260 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
13270 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
13280 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
13290 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
132a0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
132b0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
132c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
132d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
132e0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
132f0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
13300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13310 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
13320 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
13330 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
13340 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13350 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
13360 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
13370 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
13380 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133a0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
133b0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
133c0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
133d0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
133e0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
133f0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
13400 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
13410 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
13420 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
13430 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
13440 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
13450 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
13460 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
13470 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
13480 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
13490 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
134a0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
134b0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
134c0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
134d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
134e0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
134f0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
13510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13520 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
13530 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
13540 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
13550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
13560 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
13570 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
13580 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
13590 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
135a0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
135b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
135d0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
135e0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
135f0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
13600 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
13610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13620 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13630 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
13640 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13670 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
13680 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
13690 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29  on(this, handle)
136a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
136b0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
136c0 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
136d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
136e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
136f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
13700 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
13710 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
13720 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
13730 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
13740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13750 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
13760 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
13770 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
13780 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
13790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
137a0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
137b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
137c0 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
137d0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
137e0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
137f0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
13800 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
13810 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
13820 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
13830 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
13840 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
13850 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
13860 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
13870 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
13880 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
138b0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
138c0 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
138d0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
138e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
138f0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
13900 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
13910 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13930 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20  handle, e));..  
13940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13960 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
13970 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13980 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
13990 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
139a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
139b0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
139c0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
139d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
139e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
139f0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
13a00 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
13a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13a30 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
13a40 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13a70 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
13a80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
13a90 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
13aa0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13ab0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
13ac0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13ad0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13b20 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
13b30 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13b40 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
13b50 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
13b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
13b70 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
13b80 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
13b90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
13ba0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
13bb0 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ods.connectionCo
13bc0 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
13bd0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
13be0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
13c30 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
13c40 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
13c50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13c60 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
13c70 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
13c80 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13c90 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
13ca0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
13cb0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
13cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13cd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13ce0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
13cf0 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
13d00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13d10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13d20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13d30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13d80 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
13d90 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
13da0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
13db0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
13dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
13dd0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
13de0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13e00 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
13e10 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13e20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13e40 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
13e50 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
13e80 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
13e90 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
13ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13ee0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
13ef0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
13f00 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
13f10 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
13f20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
13f30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
13f50 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
13f60 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
13f70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13f80 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
13f90 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
13fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13fb0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
13fc0 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
13fd0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14030 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
14040 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
14050 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
14060 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
14070 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
14080 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
14090 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
140a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
140b0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
140c0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
140d0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
140e0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
140f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14100 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
14110 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
14120 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
14130 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
14140 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
14150 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
141a0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
141b0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
141c0 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
141d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
141e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14220 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14230 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
14240 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
14250 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
14260 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
14270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14280 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
14290 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
142a0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
142b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
142c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
142d0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
142e0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
142f0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
14300 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14310 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14320 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
14330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14350 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
14360 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
14370 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
14380 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
143d0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
143e0 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
143f0 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
14400 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
14410 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
14420 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
14430 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
14440 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
14450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14460 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
14470 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
14480 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14490 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
144a0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
144b0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
144c0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
144d0 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
144e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
144f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14540 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14550 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
14560 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
14570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
14580 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
14590 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
145a0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
145b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
145c0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
145d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
145e0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
145f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74  tiveMethods.stat
14600 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
14610 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
14620 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14670 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
14680 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
14690 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
146a0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
146b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
146c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
146d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
146e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
146f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14700 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
14710 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
14720 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
14730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14740 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
14750 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
14760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14770 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
14780 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
14790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147a0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
147b0 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
147c0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
147d0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
147e0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
147f0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
14800 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
14810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14820 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14830 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
14840 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
14850 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
14860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14870 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
14880 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  nt: {0}", localH
14890 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20  andle));..      
148a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
148b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
148c0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
148d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
148e0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
148f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
14900 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
14910 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
14920 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14940 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
14950 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
14960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14970 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14980 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
14990 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
149a0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
149b0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
149c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149d0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
149e0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
149f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
14a20 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
14a30 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
14a40 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
14a50 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
14a60 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
14a70 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
14a80 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
14a90 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
14aa0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
14ab0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
14ac0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
14ad0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
14ae0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
14af0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
14b00 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
14b10 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
14b20 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
14b30 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
14b40 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
14b50 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
14b60 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
14b70 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
14b80 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
14b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
14ba0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
14bb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14bc0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
14bd0 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
14be0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c00 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74     "FinalizeStat
14c10 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65  ement: {0}, exce
14c20 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
14c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c40 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
14c50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14c60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14c70 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
14c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14ca0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
14cb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14cc0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
14cd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
14ce0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
14cf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
14d10 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
14d20 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
14d30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
14d50 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
14d60 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
14d70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14d80 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
14d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
14da0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
14db0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
14dc0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
14dd0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
14de0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
14df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
14e40 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
14e50 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
14e60 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
14e70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14e80 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
14e90 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
14ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14eb0 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
14ec0 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d  veMethods.statem
14ed0 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  entCount);..    
14ee0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
14ef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
14f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
14f50 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
14f60 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
14f70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14f80 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
14f90 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
14fa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14fb0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
14fc0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
14fd0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
14fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15000 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
15010 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
15020 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
15030 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15040 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15050 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
150b0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
150c0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
150d0 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
150e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
150f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15100 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
15110 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
15120 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
15130 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15140 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15150 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
15160 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
15170 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
15180 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
15190 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
151a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
151b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
15200 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  n SQLiteBackupHa
15210 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
15220 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
15230 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
15240 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
15250 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a  QLite backup obj
15260 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
15270 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
15280 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
15290 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
152a0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
152b0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
152c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
152d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
152e0 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
152f0 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
15300 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
15310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
15320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15360 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
15370 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
15380 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
15390 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
153a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
153f0 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
15400 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
15410 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75  tPtr(SQLiteBacku
15420 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d  pHandle backup).
15430 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
15440 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b          if (back
15450 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  up != null)..   
15460 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
15470 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15480 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
15490 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
154a0 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74  (backup.syncRoot
154b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
154c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
154d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154e0 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e    return backup.
154f0 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
15500 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15510 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15520 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
15530 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
15540 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15550 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15590 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
155a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
155b0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
155c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
155d0 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
155e0 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  tr backup)..    
155f0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
15600 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
15610 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
15620 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15630 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
15640 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
15650 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
15660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15670 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
15680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15690 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75   SetHandle(backu
156a0 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  p);..           
156b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
156c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
15720 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ate SQLiteBackup
15730 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
15740 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
15750 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
15760 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
15770 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
15780 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
15790 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
157a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
157b0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
157c0 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
157d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
157e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
157f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15840 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
15850 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
15860 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
15870 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15880 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
15890 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
158a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
158b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
158c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
158d0 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
158e0 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
158f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15900 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
15910 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
15920 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15930 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
15940 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
15950 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
15960 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
15970 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
15980 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
15990 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
159a0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
159b0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
159c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
159d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
159e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
159f0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
15a00 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
15a10 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
15a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a30 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
15a40 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
15a50 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
15a60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15a70 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
15a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15aa0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
15ab0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
15ac0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
15ad0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
15ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15af0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15b00 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
15b10 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
15b20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b40 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
15b50 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
15b60 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
15b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b80 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
15b90 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
15ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15bb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15bc0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15bd0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
15be0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
15bf0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
15c00 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
15c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15c20 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
15c30 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
15c40 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
15c50 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
15c60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15c70 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
15c80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
15c90 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
15ca0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
15cb0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
15cc0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
15cd0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
15ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
15cf0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
15d00 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
15d10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
15d20 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
15d30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
15d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d50 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
15d60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
15d80 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
15d90 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
15da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15db0 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63        "FinishBac
15dc0 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  kup: {0}, except
15dd0 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
15de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15df0 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
15e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15e10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
15e20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
15e30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
15e50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
15e60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15e70 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
15e80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
15e90 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
15ea0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15eb0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
15ec0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
15ed0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
15ee0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15ef0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
15f00 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
15f10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15f20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15f30 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
15f40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15f50 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
15f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
15f70 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
15f80 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
15f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fe0 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
15ff0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
16000 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
16010 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
16020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16030 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
16040 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
16050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16060 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
16070 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f  Methods.backupCo
16080 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
16090 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
160a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
160f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
16100 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
16110 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
16120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
16130 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
16140 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
16150 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16170 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
16180 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
16190 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
161a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161b0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
161c0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
161d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
161e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
161f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
16200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
16210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16250 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
16260 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
16270 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
16280 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
16290 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
162a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
162b0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
162c0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
162d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
162e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
162f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
16300 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
16310 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
16320 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
16330 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
16340 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a     #endregion..}..