System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8527e7f5a5240163531baef98d1b3c6d1b5cd3ee:


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 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
37b0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
37c0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50  onmentVariable(P
37d0: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
37e0: 43 54 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a  CTURE);..#else..
37f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3800: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3810: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
3820: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
3830: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
3840: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
3850: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
3860: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
3870: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
3880: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
3890: 20 75 73 20 77 69 74 68 0d 0a 20 20 20 20 20 20   us with..      
38a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
38b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
38c0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
38d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
38e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
38f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3900: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3910: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
3920: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
3930: 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
3940: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 6c  ction will be pl
3950: 61 63 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  aced..          
3960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72      //       her
3970: 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f  e.  Only the pro
3980: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3990: 75 72 65 20 66 69 65 6c 64 20 69 73 20 75 73 65  ure field is use
39a0: 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 20 20  d by..          
39b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
39c0: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
39d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
39e0: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45             SYSTE
39f0: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
3a00: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
3a10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3a20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
3a30: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
3a40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
3a50: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 20 66  P/Invoke, thus f
3a60: 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  illing..        
3a70: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
3a80: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
3ab0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
3ac0: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
3ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3af0: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
3b00: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
3b10: 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
3b20: 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b50: 72 65 74 75 72 6e 20 73 79 73 74 65 6d 49 6e 66  return systemInf
3b60: 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
3b70: 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
3b80: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
3b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
3ba0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3bc0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
3bd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3be0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3bf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
3c00: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74  pon failure, ret
3c10: 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72  urn an empty str
3c20: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3c30: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
3c40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
3c50: 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  y;..#endif..    
3c60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3cc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3cd0: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
3ce0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3cf0: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
3d00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
3d10: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
3d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3d40: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
3d50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
3d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
3d70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3d80: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
3d90: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
3da0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
3db0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3de0: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
3df0: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
3e00: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
3e10: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
3e20: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
3e30: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
3e40: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
3e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3e60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3e70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
3e80: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
3e90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
3ea0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
3eb0: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  tecture..       
3ec0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
3ed0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
3ee0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
3ef0: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
3f00: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
3f10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3f20: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
3f30: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3f40: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3f60: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3f70: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
3f80: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
3f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fa0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3fc0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
3fd0: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
3fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
4000: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
4010: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4030: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4040: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
4050: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
4060: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4080: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
4090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
40a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
40b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
40c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
40d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4130: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4140: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
4150: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
4160: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
4170: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
4180: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
4190: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
41a0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
41b0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
41c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
41d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
41e0: 20 6e 61 6d 65 3d 22 64 69 72 65 63 74 6f 72 79   name="directory
41f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
4200: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4210: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
4220: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
4230: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
4240: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
4250: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
4260: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
4270: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
4280: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
4290: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
42a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
42b0: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
42c0: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
42d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
42e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
42f0: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
4300: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
4310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
4320: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
4330: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
4340: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
4350: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
4360: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
4370: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
4380: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
4390: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
43a0: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
43b0: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
43c0: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
43d0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
43e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
43f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
4400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
4420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
4430: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
4440: 4c 69 62 72 61 72 79 20 2d 4f 52 2d 20 49 6e 74  Library -OR- Int
4450: 50 74 72 2e 5a 65 72 6f 0d 0a 20 20 20 20 20 20  Ptr.Zero..      
4460: 2f 2f 2f 20 69 66 20 74 68 65 20 6c 6f 61 64 69  /// if the loadi
4470: 6e 67 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79  ng fails for any
4480: 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20   reason...      
4490: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
44a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
44b0: 61 74 69 63 20 49 6e 74 50 74 72 20 50 72 65 4c  atic IntPtr PreL
44c0: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
44d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
44e0: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
44f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
4500: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4510: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
4520: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4530: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4540: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
4550: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
4560: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
4570: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
4580: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ult...          
4590: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
45a0: 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e   (directory == n
45b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
45c0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
45d0: 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
45e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
45f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
4600: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
4610: 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
4620: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4630: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
4640: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4650: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
4660: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
4670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4680: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
4690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
46a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
46b0: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
46c0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
46d0: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
46e0: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
46f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4700: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
4710: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
4720: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
4730: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
4740: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
4750: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
4760: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
4770: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c        SQLITE_DLL
4780: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
4790: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
47a0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
47b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
47c0: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
47d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
47e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
47f0: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
4800: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
4810: 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
4820: 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
4830: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4840: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
4850: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4860: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
4870: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
4880: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
4890: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
48a0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
48b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
48c0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
48d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
48e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
48f0: 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
4900: 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
4910: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
4920: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
4930: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4940: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
4950: 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
4960: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4970: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
4980: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
4990: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
49a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
49b0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
49c0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
49d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
49e0: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
49f0: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
4a00: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
4a10: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
4a20: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
4a30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
4a40: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
4a50: 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e  llFileName(Path.
4a60: 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d  Combine(Path.Com
4a70: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d  bine(directory,.
4a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
4a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4aa0: 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  ture), SQLITE_DL
4ab0: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
4ac0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4ad0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
4ae0: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
4af0: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
4b00: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
4b10: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
4b20: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
4b30: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
4b40: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
4b50: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
4b60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4b70: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
4b80: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
4b90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4ba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4bb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4bc0: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
4bd0: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
4be0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4bf0: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
4c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4c10: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4c40: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
4c50: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
4c60: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
4c70: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4c90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4ca0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
4cb0: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
4cc0: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
4cd0: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
4ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4cf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4d00: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
4d10: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4d30: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
4d40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
4d50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4d60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
4d70: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
4d80: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
4d90: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
4da0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
4db0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
4dc0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
4dd0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
4de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4df0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4e00: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
4e10: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
4e20: 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43  h.Combine(Path.C
4e30: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
4e40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4e50: 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 4e 61 6d       platformNam
4e60: 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29  e), SQLITE_DLL))
4e70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4e80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4e90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
4ea0: 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
4eb0: 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
4ec0: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
4ed0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4ee0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
4ef0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
4f00: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
4f30: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
4f40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4f50: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
4f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4f80: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
4f90: 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
4fa0: 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
4fb0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4fd0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
4fe0: 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
4ff0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 23             //..#
5000: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5010: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
5020: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
5030: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
5040: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
5050: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5060: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
5070: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c      "Trying to l
50a0: 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74  oad native SQLit
50b0: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
50c0: 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  "...",..        
50d0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
50e0: 6d 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  me));..#endif...
50f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5100: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5110: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
5120: 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
5130: 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
5140: 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
5150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5160: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
5170: 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
5180: 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
5190: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
51a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51b0: 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
51c0: 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d  w an exception..
51d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
51e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
51f0: 20 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72   return LoadLibr
5200: 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
5210: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
5220: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
5230: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
5240: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
5250: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
5260: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
5270: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
5280: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
5290: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
52a0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
52b0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
52c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
52d0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
52e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
52f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5310: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
5320: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
5330: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5360: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
5370: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
5380: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
5390: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
53a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68  // NOTE: Show wh
53d0: 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f  ere we failed to
53e0: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
53f0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
5400: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5410: 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d      library from
5420: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
5430: 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65  Win32 error code
5440: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
5450: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5460: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72   exception infor
5470: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
5480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
54b0: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
54c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
54d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
54e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
54f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
5500: 20 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65            "Faile
5510: 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
5520: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
5530: 5c 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20  \"{0}\" " +..   
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f     "(getLastErro
5560: 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
5570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5580: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
5590: 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
55a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
55b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
55d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
55e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
55f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
5600: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
5610: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
5620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5630: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5640: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
5650: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
5660: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
5670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
56d0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
56e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
56f0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
5700: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
5710: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
5720: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
5730: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
5740: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
5750: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
5760: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
5770: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
5780: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
5790: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
57a0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
57b0: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
57c0: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
57d0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
57e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
57f0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
5800: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
5810: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
5820: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
5830: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
5840: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
5850: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
5860: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
5870: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
5880: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
5890: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
58a0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
58b0: 65 72 6f 70 2e 30 38 37 2e 64 6c 6c 22 3b 0d 0a  erop.087.dll";..
58c0: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
58d0: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
58e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
58f0: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
5900: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
5910: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
5920: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
5930: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
5940: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
5950: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
5960: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
5970: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
5980: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
5990: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
59a0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
59b0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
59c0: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
59d0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
59e0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
59f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
5a00: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
5a10: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
5a20: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
5a30: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
5a40: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
5a50: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
5a60: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
5a70: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
5a80: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
5a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
5aa0: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
5ab0: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
5ac0: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
5ad0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
5ae0: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
5af0: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
5b00: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
5b10: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
5b20: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
5b30: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
5b40: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
5b50: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
5b60: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
5b70: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
5b80: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
5b90: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
5ba0: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
5bb0: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
5bc0: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
5bd0: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
5be0: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
5bf0: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
5c00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
5c10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5c20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5c40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5c50: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
5c60: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
5c70: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5c80: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5c90: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5ca0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5cb0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5cc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5cd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5ce0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
5cf0: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
5d00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5d10: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5d20: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5d30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5d40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5d50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5d60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5d70: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
5d80: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
5d90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
5da0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
5db0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
5dc0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5dd0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
5de0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5df0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5e00: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
5e10: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
5e20: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
5e30: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
5e40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5e80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
5e90: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
5ea0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
5eb0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
5ec0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
5ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5ee0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5ef0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5f00: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5f10: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
5f20: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5f30: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5f40: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5f60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5f70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5f80: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5f90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
5fa0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
5fb0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5fc0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5fd0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5fe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5ff0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6000: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6010: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6020: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
6030: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
6040: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
6050: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
6060: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6070: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6080: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6090: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
60a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
60b0: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
60c0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
60d0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
60e0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
60f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6100: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6110: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6120: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6130: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
6140: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
6150: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6160: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6170: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
6190: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
61a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
61b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
61c0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
61d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
61e0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
61f0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
6200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6210: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6230: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6240: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6250: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
6260: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6270: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6280: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6290: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
62a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
62b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
62c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
62d0: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
62e0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
62f0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
6300: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
6310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6320: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6330: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6340: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6350: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
6360: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74  p(IntPtr db, out
6370: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
6380: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6390: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
63a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
63b0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
63c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
63d0: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
63e0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
63f0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
6400: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
6410: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
6420: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
6430: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
6440: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6450: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6460: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6470: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6480: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
6490: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
64a0: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
64b0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
64c0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
64d0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
64e0: 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Name, out IntPtr
64f0: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75   ptrDataType, ou
6500: 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  t IntPtr ptrColl
6510: 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74  Seq, out int not
6520: 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72  Null, out int pr
6530: 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e  imaryKey, out in
6540: 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69  t autoInc, out i
6550: 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e  nt dtLen, out in
6560: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
6570: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6580: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6590: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
65a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
65b0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
65c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
65d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
65e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
65f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6620: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
6630: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
6640: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
6650: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  len);....#if INT
6660: 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44  EROP_LOG..    [D
6670: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6680: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6690: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
66a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
66b0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
66c0: 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d  _log_interop();.
66d0: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
66e0: 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
66f0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
6700: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
6710: 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
6720: 20 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75   add existing fu
6730: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74  nctionality on t
6740: 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  op of SQLite and
6750: 20 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c   require a littl
6760: 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20  e effort to..   
6770: 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20   // get working 
6780: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  when using the s
6790: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c  tandard SQLite l
67a0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65  ibrary...    #re
67b0: 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64  gion interop add
67c0: 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ed functionality
67d0: 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
67e0: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
67f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6800: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6810: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6820: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6830: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
6840: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
6850: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
6860: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6870: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6880: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6890: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
68a0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
68b0: 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70  function_interop
68c0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
68d0: 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
68e0: 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
68f0: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
6900: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
6910: 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
6920: 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
6930: 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
6940: 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64  ffinal, int need
6950: 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20  CollSeq);....   
6960: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6970: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6980: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6990: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
69a0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e  Code sqlite3_fin
69b0: 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e  alize_interop(In
69c0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
69d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
69e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
69f0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6a00: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6a10: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
6a20: 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74  ackup_finish_int
6a30: 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b  erop(IntPtr back
6a40: 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  up);....    [Dll
6a50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6a60: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6a70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6a80: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6a90: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74  sqlite3_open_int
6aa0: 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
6ab0: 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65  Filename, SQLite
6ac0: 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
6ad0: 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ags, out IntPtr 
6ae0: 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
6af0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6b00: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6b10: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6b20: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6b30: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69  sqlite3_open16_i
6b40: 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74  nterop(byte[] ut
6b50: 66 38 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69  f8Filename, SQLi
6b60: 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
6b70: 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74  flags, out IntPt
6b80: 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
6b90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6ba0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6bb0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6bc0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
6bd0: 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  e sqlite3_reset_
6be0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6bf0: 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
6c00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6c10: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6c20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6c30: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
6c40: 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nges_interop(Int
6c50: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
6c60: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
6c70: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
6c80: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
6c90: 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61  / The standard a
6ca0: 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65  pi call equivale
6cb0: 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65  nts of the above
6cc0: 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a   interop calls..
6cd0: 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e      #region stan
6ce0: 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66  dard versions of
6cf0: 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f   interop functio
6d00: 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  ns....#if SQLITE
6d10: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
6d20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6d30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6d40: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6d50: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6d60: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6d70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6d80: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6d90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6da0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6db0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6dc0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
6dd0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
6de0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50  lite3_close(IntP
6df0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
6e00: 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43  INTEROP_LEGACY_C
6e10: 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  LOSE..#if !PLATF
6e20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
6e30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
6e40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
6e50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6e60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
6e70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
6e80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
6e90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6ea0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
6eb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6ec0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6ed0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
6ee0: 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64  lose_v2(IntPtr d
6ef0: 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a  b); /* 3.7.14+ *
6f00: 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  /..#endif....#if
6f10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6f20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6f30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6f40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6f50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6f60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6f70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6f80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6f90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6fa0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6fb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
6fc0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
6fd0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
6fe0: 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
6ff0: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
7000: 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
7010: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
7020: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
7030: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
7040: 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
7050: 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
7060: 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
7070: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7080: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7090: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
70a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
70b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
70c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
70d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
70e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
70f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7100: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7110: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7120: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
7130: 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
7140: 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ze(IntPtr stmt);
7150: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7160: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7170: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7180: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7190: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
71a0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
71b0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
71c0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
71d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
71e0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
71f0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7200: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
7210: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
7220: 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74  kup_finish(IntPt
7230: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
7240: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7250: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7260: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7270: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7280: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7290: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
72a0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
72b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
72c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
72d0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
72e0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
72f0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
7300: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
7310: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
7320: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7330: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7340: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7350: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7360: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7370: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7380: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7390: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
73a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
73b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
73c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
73d0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
73e0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
73f0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
7400: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7410: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7420: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7430: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7440: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7450: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7460: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7470: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7480: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7490: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
74a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
74b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
74c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
74d0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
74e0: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
74f0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
7500: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7510: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7520: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7530: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7540: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7550: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7560: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7570: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7580: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7590: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
75a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
75b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
75c0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
75d0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
75e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
75f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7600: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7610: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7620: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7630: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7640: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7650: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7660: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7670: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7680: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7690: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
76a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
76b0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
76c0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
76d0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
76e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
76f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7700: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7710: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7720: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7730: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7740: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7750: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7760: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7770: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7780: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7790: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
77a0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
77b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
77c0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
77d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
77e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
77f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7800: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7810: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7820: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7830: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7850: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7860: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7870: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7880: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7890: 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
78a0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
78b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
78c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
78d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
78e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
78f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7900: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7910: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7920: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7930: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7940: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7950: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7960: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7970: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
7980: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7990: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
79a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
79b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
79c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
79d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
79e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
79f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7a00: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7a10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7a20: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7a30: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7a40: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7a50: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
7a60: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
7a70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
7a80: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
7a90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7aa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7ab0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7ac0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7ad0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7ae0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7af0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7b00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7b10: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7b20: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7b30: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
7b40: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
7b50: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
7b60: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7b70: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7b80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7b90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7ba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7bb0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7bc0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7bd0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7be0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7bf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7c00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7c10: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7c20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7c30: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
7c40: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
7c50: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7c60: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
7c70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7c80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7c90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7ca0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7cb0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7cc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7cd0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7ce0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7cf0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7d00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7d10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7d20: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7d30: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
7d40: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7d50: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
7d60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7d70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7d80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7d90: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7da0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7db0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7dc0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7dd0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7de0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7e00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7e10: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7e20: 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
7e30: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7e40: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7e50: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7e60: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7e70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7e80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7e90: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7ea0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7eb0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7ec0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7ed0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7ee0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7ef0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7f00: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
7f10: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7f20: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7f30: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7f40: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7f60: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7f70: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7f80: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7f90: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
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 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7fc0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7fd0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7fe0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
7ff0: 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
8000: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8010: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8020: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8030: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8040: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8050: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8060: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8070: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8080: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8090: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
80a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
80b0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
80c0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
80d0: 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20  pare(IntPtr db, 
80e0: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
80f0: 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74   nBytes, out Int
8100: 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e  Ptr stmt, out In
8110: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
8120: 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50  ....#if USE_PREP
8130: 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41  ARE_V2..#if !PLA
8140: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8150: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8160: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8170: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8180: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8190: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
81a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
81b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
81c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
81d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
81e0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
81f0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8200: 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50  _prepare_v2(IntP
8210: 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
8220: 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
8230: 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  out IntPtr stmt,
8240: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52   out IntPtr ptrR
8250: 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  emain);..#endif.
8260: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8270: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8280: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8290: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
82a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
82b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
82c0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
82d0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
82e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
82f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8300: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8310: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
8320: 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
8330: 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
8340: 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
8350: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
8360: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
8370: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20  [] colName, out 
8380: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
8390: 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70  pe, out IntPtr p
83a0: 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69  trCollSeq, out i
83b0: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20  nt notNull, out 
83c0: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
83d0: 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  out int autoInc)
83e0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
83f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8400: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8410: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8420: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8430: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8440: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8450: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8470: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8480: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8490: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
84a0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
84b0: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
84c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
84d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
84e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
84f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8500: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8510: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8520: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8530: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8540: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8550: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8560: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8570: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
8580: 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
8590: 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
85a0: 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53  .    // SQLITE_S
85b0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
85c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
85d0: 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
85e0: 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
85f0: 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
8600: 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
8610: 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
8620: 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
8630: 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
8640: 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
8650: 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
8660: 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
8670: 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
8680: 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
8690: 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
86a0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
86b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
86c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
86d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
86e0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
86f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
8700: 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
8710: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
8720: 20 6f 75 74 20 69 6e 74 20 74 79 70 65 2c 20 6f   out int type, o
8730: 75 74 20 69 6e 74 20 65 6e 63 2c 20 6f 75 74 20  ut int enc, out 
8740: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
8750: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8760: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8770: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8780: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8790: 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
87a0: 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
87b0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
87c0: 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
87d0: 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
87e0: 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
87f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8800: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8810: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8820: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8830: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
8840: 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
8850: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
8860: 6e 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20 6c  nt cursor, out l
8870: 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
8880: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8890: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
88a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
88b0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
88c0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
88d0: 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
88e0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
88f0: 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
8900: 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
8910: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
8920: 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e 74  umnName, out int
8930: 20 73 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74 20   sortOrder, out 
8940: 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75 74  int onError, out
8950: 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
8960: 6e 2c 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c 6c  n, out int colll
8970: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
8980: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8990: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
89a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
89b0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
89c0: 65 74 61 6c 6c 5f 69 6e 74 65 72 6f 70 28 49 6e  etall_interop(In
89d0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
89e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
89f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8a00: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8a10: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8a20: 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e  _table_cursor_in
8a30: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
8a40: 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74  t, int db, int t
8a50: 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a  ableRootPage);..
8a60: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
8a70: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
8a80: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8a90: 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61  ...    // Standa
8aa0: 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f  rd API calls glo
8ab0: 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69  bal across versi
8ac0: 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20  ons.  There are 
8ad0: 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20  a few instances 
8ae0: 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  of interop calls
8af0: 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72  ..    // scatter
8b00: 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20  ed in here, but 
8b10: 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63  they are only ac
8b20: 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f  tive when PLATFO
8b30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8b40: 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e  ORK is declared.
8b50: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
8b60: 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61 70  andard sqlite ap
8b70: 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21 50 4c  i calls..#if !PL
8b80: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8b90: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8ba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8bb0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8bc0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8bd0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8be0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8bf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8c00: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8c10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8c20: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8c30: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8c40: 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
8c50: 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
8c60: 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74    IntPtr db, int
8c70: 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
8c80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8c90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8ca0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8cb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8cc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8cd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8ce0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8cf0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8d00: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8d10: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8d20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8d30: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8d40: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
8d50: 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
8d60: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
8d70: 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b   fileName, byte[
8d80: 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20  ] procName, ref 
8d90: 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d  IntPtr pError);.
8da0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8db0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8dc0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8dd0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8de0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8df0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8e00: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
8e10: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
8e20: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
8e30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8e40: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
8e50: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
8e60: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
8e70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8e80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8e90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8ea0: 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
8eb0: 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
8ec0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
8ed0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8ee0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8ef0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8f00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8f10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8f20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8f30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8f40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8f50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8f60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8f70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8f80: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
8f90: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
8fa0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8fb0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8fc0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8fd0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8fe0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8ff0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9000: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9010: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9020: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9030: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9040: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9050: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
9060: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
9070: 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
9080: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9090: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
90a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
90b0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
90c0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
90d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
90e0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
90f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9100: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
9110: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9120: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
9130: 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
9140: 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
9150: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9160: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9170: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9180: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9190: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
91a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
91b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
91c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
91d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
91e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
91f0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
9200: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69  sqlite3_malloc(i
9210: 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
9220: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9230: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9240: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9250: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9260: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9270: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9280: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9290: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
92a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
92b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
92c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
92d0: 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  r sqlite3_reallo
92e0: 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20  c(IntPtr p, int 
92f0: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
9300: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9310: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9320: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9330: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9340: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9350: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9360: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9370: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9380: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9390: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
93a0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
93b0: 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72  ite3_free(IntPtr
93c0: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
93d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
93e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
93f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9400: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9410: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9420: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9430: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9440: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9450: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9460: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9470: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9480: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9490: 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20  _open_v2(byte[] 
94a0: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75  utf8Filename, ou
94b0: 74 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  t IntPtr db, SQL
94c0: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
94d0: 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76   flags, IntPtr v
94e0: 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  fs);....#if !PLA
94f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9500: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9510: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9520: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9530: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9540: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
9550: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
9560: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
9570: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9580: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9590: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
95a0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#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 6f 70 65 6e 31 36 28 73 74  qlite3_open16(st
95f0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 6f  ring fileName, o
9600: 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ut IntPtr db);..
9610: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9620: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9630: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9640: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9650: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9660: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9670: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9680: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9690: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
96a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
96b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
96c0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
96d0: 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
96e0: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
96f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9700: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9710: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9720: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9730: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9740: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9750: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9760: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
9770: 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
9780: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
9790: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6c 73 65 0d  Ptr db);..#else.
97a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
97b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
97c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
97d0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
97e0: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
97f0: 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
9800: 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
9810: 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 23 65 6e  ong rowId);..#en
9820: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
9830: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9840: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9860: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9870: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9880: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9890: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
98a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
98b0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
98c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
98d0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
98e0: 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
98f0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
9900: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9910: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9920: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9930: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9940: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9950: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9960: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
9970: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9980: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
9990: 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6c  ory_used();..#el
99a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
99b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
99c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
99d0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
99e0: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
99f0: 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
9a00: 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23   long bytes);..#
9a10: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
9a20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9a30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9a40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9a50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9a60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9a70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9a80: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9a90: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
9aa0: 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
9ab0: 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20  y_highwater(int 
9ac0: 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6c  resetFlag);..#el
9ad0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9ae0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9af0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9b00: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
9b10: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
9b20: 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
9b30: 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
9b40: 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
9b50: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
9b60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9b70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9b80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9b90: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9ba0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9bb0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9bc0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9bd0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9be0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9bf0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9c00: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9c10: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9c20: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
9c30: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9c40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9c50: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9c60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9c70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9c80: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9c90: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9ca0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9cb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9cc0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9cd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9ce0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9cf0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75  rCode sqlite3_bu
9d00: 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74  sy_timeout(IntPt
9d10: 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a  r db, int ms);..
9d20: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9d30: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9d40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9d50: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9d60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9d70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9d80: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9d90: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9da0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9db0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9dc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9dd0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
9de0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
9df0: 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
9e00: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74  , int index, Byt
9e10: 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
9e20: 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72  Size, IntPtr nTr
9e30: 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66  ansient);....#if
9e40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9e50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9e60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9e70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9e80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9e90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9ea0: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
9eb0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9ec0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9ed0: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
9ee0: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
9ef0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f  t, int index, do
9f00: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
9f10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9f20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9f30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9f40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9f50: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9f60: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9f70: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9f80: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
9f90: 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
9fa0: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
9fb0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9fc0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9fd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9fe0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9ff0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a000: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a010: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a020: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a030: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
a040: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
a050: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a060: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
a070: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
a080: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a090: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
a0a0: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ue);....    //..
a0b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
a0c0: 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
a0d0: 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
a0e0: 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c  d_int"; however,
a0f0: 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
a100: 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
a110: 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
a120: 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
a130: 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65   (32-bit) intege
a140: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
a150: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a160: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a170: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a180: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
a190: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
a1a0: 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43  d_int", CallingC
a1b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a1c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a1d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a1e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a1f0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
a200: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
a210: 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64  ind_int")]..#end
a220: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a230: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
a240: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
a250: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
a260: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a270: 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61  t index, uint va
a280: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
a290: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a2a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a2b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a2c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a2d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a2e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a2f0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
a300: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a310: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a320: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
a330: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a340: 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
a350: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
a360: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a370: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
a380: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a390: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
a3a0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
a3b0: 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
a3c0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a3d0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
a3e0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
a3f0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
a400: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
a410: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
a420: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
a430: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
a440: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
a450: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
a460: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
a470: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
a480: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
a490: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
a4a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a4b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a4c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a4d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
a4e0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
a4f0: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
a500: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a510: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a520: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
a530: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a540: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a550: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a560: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
a570: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a580: 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
a590: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
a5a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a5b0: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
a5c0: 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
a5d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d  int64_interop")]
a5e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a5f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
a600: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
a610: 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
a620: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
a630: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
a640: 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65   ref ulong value
a650: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
a660: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a670: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a680: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a690: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a6a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a6b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a6c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a6d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a6e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a6f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a700: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
a710: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
a720: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
a730: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a740: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
a750: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a760: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a770: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a780: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a790: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a7a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a7b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a7c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a7d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a7e0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a7f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a800: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a810: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
a820: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
a830: 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76   index, byte[] v
a840: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
a850: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
a860: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
a870: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a880: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a890: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a8a0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a8b0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a8c0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a8d0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a8e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a8f0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a900: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a910: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
a920: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
a930: 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  er_count(IntPtr 
a940: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
a950: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a960: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a970: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a980: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a990: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a9a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a9b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a9c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a9d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a9e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a9f0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
aa00: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
aa10: 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50  meter_index(IntP
aa20: 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20  tr stmt, byte[] 
aa30: 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  strName);....#if
aa40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
aa50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
aa60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
aa70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
aa80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
aa90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
aaa0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
aab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
aac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
aad0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
aae0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
aaf0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
ab00: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
ab10: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
ab20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ab30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ab40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ab50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ab60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ab70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ab80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ab90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
aba0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
abb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
abc0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
abd0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
abe0: 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d  _step(IntPtr stm
abf0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
ac00: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ac10: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
ac20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ac30: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
ac40: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
ac50: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
ac60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ac70: 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
ac80: 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  le sqlite3_colum
ac90: 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  n_double(IntPtr 
aca0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
acb0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
acc0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
acd0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
ace0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
acf0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
ad00: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
ad10: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
ad20: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
ad30: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
ad40: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
ad50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ad60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ad70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ad80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ad90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ada0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
adb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
adc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
add0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ade0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
adf0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
ae00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
ae10: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
ae20: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
ae30: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ae40: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ae50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ae60: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ae70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ae80: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ae90: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
aea0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
aeb0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
aec0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
aed0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
aee0: 6e 64 65 78 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndex);..#else.. 
aef0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
af00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
af10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
af20: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
af30: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
af40: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
af50: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
af60: 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29   out long value)
af70: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
af80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
af90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
afa0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
afb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
afc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
afd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
afe0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
aff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b000: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b010: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b020: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b030: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
b040: 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  umn_blob(IntPtr 
b050: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
b060: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b070: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b080: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b090: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b0a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b0b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b0c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b0d0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b0e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b0f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b100: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b110: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b120: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49  3_column_bytes(I
b130: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b140: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
b150: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b160: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b170: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b180: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b190: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b1a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b1b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b1c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b1d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b1e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b1f0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
b200: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
b210: 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73 74  ytes16(IntPtr st
b220: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
b230: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b240: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b250: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b260: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b270: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b280: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b290: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
b2a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b2b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b2c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
b2d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b2e0: 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
b2f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
b300: 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
b310: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
b320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b340: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b350: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b360: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b370: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b380: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b390: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b3a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b3b0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b3c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b3d0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
b3e0: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
b3f0: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74  _collation(IntPt
b400: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
b410: 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Name, int nType,
b420: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
b430: 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
b440: 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  func);....#if !P
b450: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b460: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b470: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b480: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b490: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b4a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b4b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b4d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b4e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b4f0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b500: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
b510: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  _count(IntPtr co
b520: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
b530: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b540: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b550: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b560: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b570: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b580: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b590: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b5a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b5b0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b5c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b5d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b5e0: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
b5f0: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b  _blob(IntPtr p);
b600: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b610: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b620: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b630: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b650: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b660: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
b670: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b680: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b690: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
b6a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b6b0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
b6c0: 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74  _value_bytes(Int
b6d0: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
b6e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b6f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b700: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b710: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b720: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b730: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b740: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b750: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b760: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b770: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b780: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
b790: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
b7a0: 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b  tes16(IntPtr p);
b7b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b7c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b7d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b7e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b7f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b800: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b810: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
b820: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b830: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
b840: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
b850: 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  uble(IntPtr p);.
b860: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b870: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b880: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b890: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b8a0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
b8b0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
b8c0: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
b8d0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
b8e0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
b8f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b900: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b910: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b920: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b930: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b940: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b950: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b960: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b970: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b980: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b990: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b9a0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
b9b0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
b9c0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b9d0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
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 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ba00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ba10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ba20: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
ba30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ba40: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
ba50: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
ba60: 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a  Ptr p);..#else..
ba70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ba80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
ba90: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
baa0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
bab0: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
bac0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
bad0: 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76 61 6c  p, out Int64 val
bae0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
baf0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
bb00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
bb10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bb20: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
bb30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
bb40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
bb50: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
bb60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bb70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
bb80: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bb90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bba0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
bbb0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
bbc0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
bbd0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
bbe0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
bbf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bc00: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
bc10: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
bc20: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
bc30: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
bc40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bc50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
bc60: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
bc70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bc80: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
bc90: 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
bca0: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
bcb0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
bcc0: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
bcd0: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
bce0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
bcf0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
bd00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bd10: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
bd20: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
bd30: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
bd40: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
bd50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
bd60: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
bd70: 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
bd80: 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
bd90: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
bda0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bdb0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bdc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bdd0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
bde0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
bdf0: 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
be00: 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
be10: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
be20: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
be30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
be40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
be50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
be60: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
be70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
be80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
be90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
bea0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
beb0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
bec0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bed0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
bee0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
bef0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
bf00: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
bf10: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
bf20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
bf30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
bf40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bf50: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
bf60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
bf70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
bf80: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
bf90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bfa0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
bfb0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
bfc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bfd0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
bfe0: 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65  esult_error_code
bff0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c000: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
c010: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
c020: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c030: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c040: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c050: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c060: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c070: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c080: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c090: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c0a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c0b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c0c0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
c0d0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
c0e0: 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e  _error_toobig(In
c0f0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
c100: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c110: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c120: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c130: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c140: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c150: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c160: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c170: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c180: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c190: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c1a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c1b0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
c1c0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d  result_error_nom
c1d0: 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  em(IntPtr contex
c1e0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
c1f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c200: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c210: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c220: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c230: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c240: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c250: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c260: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c270: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c280: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c290: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c2a0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
c2b0: 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
c2c0: 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b  , IntPtr value);
c2d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c2e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c2f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c300: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c310: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c320: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c330: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c340: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c350: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c360: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c370: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c380: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c390: 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
c3a0: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
c3b0: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
c3c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
c3d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
c3e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c3f0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
c400: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
c410: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c420: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
c430: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c440: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
c450: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
c460: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c470: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
c480: 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20  sult_int(IntPtr 
c490: 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c  context, int val
c4a0: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
c4b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c4c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c4d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c4e0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c4f0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c500: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c510: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c520: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
c530: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
c540: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
c550: 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
c560: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
c570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c580: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c590: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c5a0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c5b0: 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
c5c0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
c5d0: 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20  text, ref Int64 
c5e0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
c5f0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c600: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c610: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c620: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c630: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c640: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c650: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c660: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c670: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c680: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c690: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c6a0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c6b0: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
c6c0: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
c6d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c6e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c6f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c700: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c710: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c720: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c730: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c740: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c750: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c760: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c770: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c780: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
c790: 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
c7a0: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
c7b0: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
c7c0: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
c7d0: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
c7e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c7f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c800: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c810: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c820: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c830: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c840: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c850: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c860: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c870: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c880: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c890: 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
c8a0: 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
c8b0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
c8c0: 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
c8d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c8e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c8f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c900: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c910: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c920: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c930: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
c940: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
c950: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c960: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c970: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
c980: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
c990: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c9a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c9b0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
c9c0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
c9d0: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
c9e0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
c9f0: 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
ca00: 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
ca10: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
ca20: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ca30: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ca40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ca50: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
ca60: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ca70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ca80: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
ca90: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
caa0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
cab0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cac0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
cad0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
cae0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
caf0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
cb00: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
cb10: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
cb20: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
cb30: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
cb40: 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
cb50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
cb60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
cb70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
cb80: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
cb90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
cba0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
cbb0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
cbc0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
cbd0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cbe0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cbf0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
cc00: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
cc10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cc20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cc30: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
cc40: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
cc50: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
cc60: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
cc70: 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
cc80: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
cc90: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
cca0: 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  DEC..#if !PLATFO
ccb0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ccc0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ccd0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cce0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ccf0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cd00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cd10: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cd20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cd30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cd40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cd50: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
cd60: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
cd70: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
cd80: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
cd90: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
cda0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
cdb0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
cdc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cdd0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
cde0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
cdf0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ce00: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ce10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ce20: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ce30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ce40: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ce50: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
ce60: 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
ce70: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
ce80: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
ce90: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
cea0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ceb0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
cec0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ced0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
cee0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
cef0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
cf00: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
cf10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cf20: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
cf30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
cf40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
cf50: 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
cf60: 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
cf70: 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61  LiteUpdateCallba
cf80: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
cf90: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
cfa0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cfb0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
cfc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cfd0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
cfe0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cff0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d000: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d010: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d020: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d030: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d040: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d050: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d  Ptr sqlite3_comm
d060: 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  it_hook(IntPtr d
d070: 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  b, SQLiteCommitC
d080: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
d090: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
d0a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d0b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d0c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d0d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d0e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d0f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d100: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d110: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d120: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d130: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d140: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d150: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
d160: 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62  _trace(IntPtr db
d170: 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
d180: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
d190: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20  tr pvUser);.... 
d1a0: 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
d1b0: 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b  te3_config() tak
d1c0: 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
d1d0: 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
d1e0: 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
d1f0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
d200: 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
d210: 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61  ssible calls tha
d220: 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65  t we want to use
d230: 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d240: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d250: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d260: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
d270: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
d280: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
d290: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d2a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d2b0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d2c0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d2d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
d2e0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
d2f0: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
d300: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d310: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d320: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d330: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
d340: 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66  _none(SQLiteConf
d350: 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a  igOpsEnum op);..
d360: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d370: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d380: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d390: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
d3a0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
d3b0: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
d3c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d3d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d3e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d3f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d400: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
d410: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
d420: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
d430: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d440: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d450: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
d460: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
d470: 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  int(SQLiteConfig
d480: 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
d490: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
d4a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d4b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d4d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
d4e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
d4f0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
d500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d520: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d540: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
d550: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
d560: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
d570: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d580: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
d590: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
d5a0: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c  3_config_log(SQL
d5b0: 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
d5c0: 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61   op, SQLiteLogCa
d5d0: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
d5e0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
d5f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d600: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d610: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d620: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d630: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d650: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d660: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d670: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d680: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d690: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d6a0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d6b0: 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
d6c0: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
d6d0: 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
d6e0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
d6f0: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
d700: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d710: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d720: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d730: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d740: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d750: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d760: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
d770: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d780: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
d790: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d7a0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d7b0: 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
d7c0: 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
d7d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d7e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d7f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d800: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d810: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d820: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d830: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d840: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d850: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d860: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d870: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d880: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d890: 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28  te3_db_filename(
d8a0: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
d8b0: 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  r dbName);....#i
d8c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d8d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d8e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d8f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d900: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d910: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d920: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d930: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d940: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d950: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d960: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d970: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
d980: 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
d990: 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
d9a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d9b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d9c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d9d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d9e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d9f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
da00: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
da10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
da20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
da30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
da40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
da50: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
da60: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
da70: 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
da80: 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
da90: 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
daa0: 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f  ntPtr pvParam, o
dab0: 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ut IntPtr errMsg
dac0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
dad0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
dae0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
daf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
db00: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
db10: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
db20: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
db30: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
db40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
db50: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
db60: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
db70: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
db80: 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
db90: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
dba0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
dbb0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
dbc0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
dbd0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
dbe0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
dbf0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
dc00: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
dc10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dc20: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
dc30: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
dc40: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
dc50: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
dc60: 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
dc70: 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
dc80: 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
dc90: 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  noff);....#if !P
dca0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
dcb0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
dcc0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
dcd0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
dce0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
dcf0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
dd00: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
dd10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
dd20: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
dd30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
dd40: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
dd50: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
dd60: 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  e3_errcode(IntPt
dd70: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
dd80: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
dd90: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
dda0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ddb0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ddc0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ddd0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
dde0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ddf0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
de00: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
de10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
de20: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
de30: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
de40: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
de50: 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
de60: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
de70: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
de80: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
de90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
dea0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
deb0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
dec0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ded0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
dee0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
def0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
df00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
df10: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
df20: 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65  e3_errstr(SQLite
df30: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f  ErrorCode rc); /
df40: 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a  * 3.7.15+ */....
df50: 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
df60: 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73  ite3_log() takes
df70: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
df80: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
df90: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
dfa0: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
dfb0: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
dfc0: 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
dfd0: 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
dfe0: 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e  y exposing a sin
dff0: 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d  gle string, and.
e000: 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f  .    // depend o
e010: 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20  n the caller to 
e020: 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e  format the strin
e030: 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  g...#if !PLATFOR
e040: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e050: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e060: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e070: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e080: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e090: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e0a0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e0b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e0c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e0d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e0e0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
e0f0: 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f  3_log(SQLiteErro
e100: 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20  rCode iErrCode, 
e110: 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b  byte[] zFormat);
e120: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e130: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e140: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e150: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e160: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e170: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e180: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e190: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e1a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e1b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e1c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e1d0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e1e0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c  Code sqlite3_fil
e1f0: 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72  e_control(IntPtr
e200: 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e   db, byte[] zDbN
e210: 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
e220: 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69  Ptr pArg);....#i
e230: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e240: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e260: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e270: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e280: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e290: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e2a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e2b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e2c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e2d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
e2e0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61  ntPtr sqlite3_ba
e2f0: 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72  ckup_init(IntPtr
e300: 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20   destDb, byte[] 
e310: 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74  zDestName, IntPt
e320: 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65  r sourceDb, byte
e330: 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b  [] zSourceName);
e340: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e350: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e360: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e370: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e380: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e390: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e3a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e3b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e3c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e3d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e3e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e3f0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e400: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
e410: 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20  kup_step(IntPtr 
e420: 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67  backup, int nPag
e430: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
e440: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e450: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e460: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e470: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e480: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e490: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e4a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e4b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e4c0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e4d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e4e0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
e4f0: 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69  te3_backup_remai
e500: 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b  ning(IntPtr back
e510: 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
e520: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e530: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e540: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e550: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e560: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e570: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e580: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e590: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e5a0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e5b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e5c0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
e5d0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65  ite3_backup_page
e5e0: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63  count(IntPtr bac
e5f0: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
e600: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e610: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e620: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e630: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e640: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e650: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e660: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e670: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e680: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e690: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e6a0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
e6b0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
e6c0: 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
e6d0: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
e6e0: 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
e6f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e700: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e710: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e720: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e730: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e740: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e750: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e760: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e770: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e780: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e790: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e7a0: 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
e7b0: 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
e7c0: 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
e7d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e7e0: 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
e7f0: 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
e800: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
e810: 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
e820: 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
e830: 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
e840: 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
e850: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
e860: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
e870: 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
e880: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
e890: 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
e8a0: 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21  api calls..#if !
e8b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e8c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e8d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e8e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e8f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e900: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e910: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e920: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e930: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e940: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e950: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e960: 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
e970: 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
e980: 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
e990: 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
e9a0: 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
e9b0: 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
e9c0: 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
e9d0: 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
e9e0: 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
e9f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ea00: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ea10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ea20: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ea30: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ea40: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ea50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ea60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ea70: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
ea80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ea90: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
eaa0: 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
eab0: 64 75 6c 65 28 72 65 66 20 73 71 6c 69 74 65 33  dule(ref sqlite3
eac0: 5f 6d 6f 64 75 6c 65 20 70 4d 6f 64 75 6c 65 29  _module pModule)
ead0: 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
eae0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
eaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
eb40: 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
eb50: 61 74 65 73 0d 0a 23 69 66 20 21 50 4c 41 54 46  ates..#if !PLATF
eb60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
eb70: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
eb80: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
eb90: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
eba0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ebb0: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
ebc0: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
ebd0: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
ebe0: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
ebf0: 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
ec00: 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
ec10: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
ec20: 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61 72 73  ,..        [Mars
ec30: 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54  halAs(UnmanagedT
ec40: 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53 69 7a  ype.LPArray, Siz
ec50: 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20 32 29  eParamIndex = 2)
ec60: 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ]..        IntPt
ec70: 72 5b 5d 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  r[] argv,..     
ec80: 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
ec90: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
eca0: 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
ecb0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
ecc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ecd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ece0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ecf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
ed10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ed20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ed30: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
ed40: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
ed50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ed60: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
ed70: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
ed80: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
ed90: 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
eda0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
edb0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
edc0: 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
edd0: 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
ede0: 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
edf0: 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
ee00: 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61 6d 49  rray, SizeParamI
ee10: 6e 64 65 78 20 3d 20 32 29 5d 0d 0a 20 20 20 20  ndex = 2)]..    
ee20: 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67      IntPtr[] arg
ee30: 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
ee40: 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
ee50: 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
ee60: 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
ee70: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eec0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
eed0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
eee0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
eef0: 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
ef00: 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
ef10: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ef20: 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
ef30: 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
ef40: 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
ef50: 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
ef60: 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
ef70: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
ef80: 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Index..    );...
ef90: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efe0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
eff0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f000: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
f010: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
f020: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
f030: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
f040: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
f050: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
f060: 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e  rrorCode xDiscon
f070: 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
f080: 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
f090: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f0f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f100: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f110: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f120: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f130: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f140: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f150: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f160: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f170: 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
f180: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
f190: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f1f0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f200: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f210: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f220: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f230: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f240: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f250: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f260: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
f270: 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
f280: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
f290: 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
f2a0: 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
f2b0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
f2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f310: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f320: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f330: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f340: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f350: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f360: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f370: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f380: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f390: 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
f3a0: 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
f3b0: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f410: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f420: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f430: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f440: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f450: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f460: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f470: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f480: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
f490: 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  e xFilter(..    
f4a0: 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
f4b0: 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  or,..        int
f4c0: 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20   idxNum,..      
f4d0: 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c    IntPtr idxStr,
f4e0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
f4f0: 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
f500: 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20 20  Ptr[] argv..    
f510: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
f520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f560: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
f570: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f580: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
f590: 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
f5a0: 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
f5b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f5c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
f5d0: 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
f5e0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e  LiteErrorCode xN
f5f0: 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ext(..        In
f600: 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
f610: 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
f620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f660: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
f670: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f680: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f690: 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
f6a0: 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
f6b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f6c0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f6d0: 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
f6e0: 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20  int xEof(..     
f6f0: 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
f700: 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
f710: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f760: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f770: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f780: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
f790: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
f7a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f7b0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
f7c0: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
f7d0: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
f7e0: 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
f7f0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
f800: 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
f810: 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
f820: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e  ..        int in
f830: 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
f840: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
f880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f890: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f8a0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f8b0: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
f8c0: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
f8d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f8e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
f8f0: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
f900: 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
f910: 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a  orCode xRowId(..
f920: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
f930: 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
f940: 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
f950: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
f960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
f9b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f9c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f9d0: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
f9e0: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
f9f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fa00: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
fa10: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
fa20: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
fa30: 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20  de xUpdate(..   
fa40: 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
fa50: 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
fa60: 6e 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  nData,..        
fa70: 49 6e 74 50 74 72 20 61 70 44 61 74 61 2c 0d 0a  IntPtr apData,..
fa80: 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
fa90: 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
faa0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
fab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
fb00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
fb10: 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
fb20: 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
fb30: 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
fb40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
fb50: 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
fb60: 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
fb70: 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
fb80: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
fb90: 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
fba0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
fbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbf0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
fc00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fc10: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
fc20: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
fc30: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
fc40: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
fc50: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
fc60: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
fc70: 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63  eErrorCode xSync
fc80: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
fc90: 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
fca0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcf0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
fd00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fd10: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
fd20: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
fd30: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
fd40: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
fd50: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
fd60: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
fd70: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d  eErrorCode xComm
fd80: 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  it(..        Int
fd90: 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
fda0: 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
fe00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fe10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
fe20: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
fe30: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
fe40: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fe50: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
fe60: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
fe70: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
fe80: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
fe90: 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
fea0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
ff00: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
ff10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ff20: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
ff30: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
ff40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ff50: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
ff60: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
ff70: 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69   int xFindFuncti
ff80: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
ff90: 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
ffa0: 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20      int nArg,.. 
ffb0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
ffc0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ame,..        re
ffd0: 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  f SQLiteCallback
ffe0: 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20   callback,..    
fff0: 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
10000 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b  UserData..    );
10010 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
10020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10060 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
10070 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10080 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
10090 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
100a0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
100b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
100c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
100d0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
100e0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e  teErrorCode xRen
100f0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ame(..        In
10100 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
10110 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77       IntPtr zNew
10120 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
10130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
10180 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10190 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
101a0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
101b0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
101c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
101d0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
101e0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
101f0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
10200 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d  ode xSavepoint(.
10210 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
10220 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
10230 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
10240 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10290 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
102a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
102b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
102c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
102d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
102e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
102f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
10300 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
10310 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
10320 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  e xRelease(..   
10330 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
10340 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
10350 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
10360 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
10370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
103c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
103d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
103e0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
103f0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
10400 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10410 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
10420 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
10430 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
10440 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
10450 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
10460 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
10470 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
10480 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
10490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
104e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
104f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
10500 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
10510 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
10520 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10530 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
10540 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
10550 20 78 46 75 6e 63 28 0d 0a 20 20 20 20 20 20 20   xFunc(..       
10560 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
10570 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
10580 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d  rgc,..        [M
10590 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67  arshalAs(Unmanag
105a0 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 2c 20  edType.LPArray, 
105b0 53 69 7a 65 50 61 72 61 6d 49 6e 64 65 78 20 3d  SizeParamIndex =
105c0 20 31 29 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e   1)]..        In
105d0 74 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20  tPtr[] argv..   
105e0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
105f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10630 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
10640 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10650 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
10660 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
10670 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
10680 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10690 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
106a0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
106b0 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
106c0 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  le(IntPtr pClien
106d0 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 23 65 6e  tData);..    #en
106e0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
106f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
10740 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
10750 20 53 74 72 75 63 74 75 72 65 73 0d 0a 20 20 20   Structures..   
10760 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
10770 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
10780 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
10790 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
107a0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
107b0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
107c0 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d  c int iVersion;.
107d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
107e0 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b  xCreate xCreate;
107f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10800 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
10810 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
10820 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78  lic xBestIndex x
10830 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20  BestIndex;..    
10840 20 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63      public xDisc
10850 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
10860 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
10870 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65  lic xDestroy xDe
10880 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20  stroy;..        
10890 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
108a0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  en;..        pub
108b0 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  lic xClose xClos
108c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
108d0 69 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  ic xFilter xFilt
108e0 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  er;..        pub
108f0 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b  lic xNext xNext;
10900 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10910 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20   xEof xEof;..   
10920 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c       public xCol
10930 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  umn xColumn;..  
10940 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
10950 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20  wId xRowId;..   
10960 20 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64       public xUpd
10970 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20  ate xUpdate;..  
10980 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
10990 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
109a0 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e       public xSyn
109b0 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20  c xSync;..      
109c0 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74    public xCommit
109d0 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20   xCommit;..     
109e0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
109f0 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a  ack xRollback;..
10a00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10a10 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
10a20 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20  ndFunction;..   
10a30 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e       public xRen
10a40 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20  ame xRename;..  
10a50 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74        /* The met
10a60 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69  hods above are i
10a70 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74  n version 1 of t
10a80 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  he sqlite3_modul
10a90 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62  e..         * ob
10aa0 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c  ject.  Those bel
10ab0 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
10ac0 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72  on 2 and greater
10ad0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  . */..        pu
10ae0 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20  blic xSavepoint 
10af0 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20  xSavepoint;..   
10b00 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c       public xRel
10b10 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a  ease xRelease;..
10b20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10b30 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
10b40 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
10b50 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b80 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
10bb0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
10bc0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
10bd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
10be0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
10bf0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
10c00 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
10c10 6d 6f 64 75 6c 65 20 70 4d 6f 64 75 6c 65 3b 0d  module pModule;.
10c20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
10c30 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20  int nRef; /* NO 
10c40 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a  LONGER USED */..
10c50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
10c60 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a  ntPtr zErrMsg;..
10c70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10cd0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
10ce0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
10cf0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
10d00 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
10d10 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
10d20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
10d30 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 76 74  ublic sqlite3_vt
10d40 61 62 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d  ab pVTab;..    }
10d50 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
10d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
10db0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
10dc0 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
10dd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10de0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
10df0 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  dex_constraint..
10e00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
10e10 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
10e20 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d  dex_constraint(.
10e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
10e40 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
10e50 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
10e60 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
10e70 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
10e80 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
10e90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
10ea0 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c  onstraint != nul
10eb0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
10ec0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10ed0 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e     iColumn = con
10ee0 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b  straint.iColumn;
10ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f00 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e    op = constrain
10f10 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  t.op;..         
10f20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20         usable = 
10f30 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c  constraint.usabl
10f40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
10f50 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20      iTermOffset 
10f60 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65  = constraint.iTe
10f70 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20  rmOffset;..     
10f80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10f90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
10fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10ff0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
11000 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  lumn;..        p
11010 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
11020 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70  xConstraintOp op
11030 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
11040 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a  c byte usable;..
11050 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
11060 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt iTermOffset;.
11070 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
110d0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
110e0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
110f0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
11100 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
11110 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
11120 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  y..    {..      
11130 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
11140 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d  _index_orderby(.
11150 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
11160 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20  iteIndexOrderBy 
11170 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  orderBy..       
11180 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
11190 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
111a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
111b0 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79       if (orderBy
111c0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
111d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
111e0 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d            iColum
111f0 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c  n = orderBy.iCol
11200 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
11210 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64        desc = ord
11220 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20  erBy.desc;..    
11230 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11240 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
112a0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
112b0 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e  olumn; /* Column
112c0 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20   number */..    
112d0 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
112e0 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20  desc;   /* True 
112f0 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
11300 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20   for ASC. */..  
11310 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
11320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11360 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
11370 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
11380 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
11390 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
113a0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
113b0 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
113c0 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a  t_usage..    {..
113d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
113e0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
113f0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a  straint_usage(..
11400 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
11410 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
11420 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e  tUsage constrain
11430 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20  tUsage..        
11440 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
11450 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
11460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11470 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
11480 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29  ntUsage != null)
11490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
114a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
114b0 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e   argvIndex = con
114c0 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67  straintUsage.arg
114d0 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  vIndex;..       
114e0 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20           omit = 
114f0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
11500 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  omit;..         
11510 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
11520 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
11530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
11580 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64  blic int argvInd
11590 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f  ex; /* if >0, co
115a0 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
115b0 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
115c0 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ter */..        
115d0 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74  public byte omit
115e0 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20  ;     /* Do not 
115f0 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20  code a test for 
11600 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
11610 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
11620 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11670 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
11680 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
11690 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
116a0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
116b0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
116c0 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  o..    {..      
116d0 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a    /* Inputs */..
116e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
116f0 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20  nt nConstraint; 
11700 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74  /* Number of ent
11710 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61  ries in aConstra
11720 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  int */..        
11730 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
11740 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20  onstraint;..    
11750 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
11760 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20  OrderBy;..      
11770 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
11780 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20  aOrderBy;..     
11790 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f     /* Outputs */
117a0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
117b0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
117c0 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20  intUsage;..     
117d0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64     public int id
117e0 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20  xNum;           
117f0 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  /* Number used t
11800 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69  o identify the i
11810 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
11820 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69   public string i
11830 64 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a  dxStr;        /*
11840 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c   String, possibl
11850 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
11860 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a  sqlite3_malloc *
11870 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
11880 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65  c int needToFree
11890 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20  IdxStr; /* Free 
118a0 69 64 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c  idxStr using sql
118b0 69 74 65 33 5f 66 72 65 65 28 29 20 69 66 20 74  ite3_free() if t
118c0 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  rue */..        
118d0 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72  public int order
118e0 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20  ByConsumed;  /* 
118f0 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69  True if output i
11900 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65  s already ordere
11910 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  d */..        pu
11920 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69  blic double esti
11930 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73  matedCost; /* Es
11940 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20  timated cost of 
11950 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78  using this index
11960 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20   */..    }..    
11970 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
11980 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
11990 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
119a0 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73  ..  internal abs
119b0 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69 74  tract class Crit
119c0 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69  icalHandle : IDi
119d0 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20  sposable..  {.. 
119e0 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
119f0 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20  _isClosed;..    
11a00 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72  protected IntPtr
11a10 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20   handle;....    
11a20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69 63  protected Critic
11a30 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  alHandle(IntPtr 
11a40 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
11a50 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
11a60 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c    handle = inval
11a70 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a  idHandleValue;..
11a80 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20        _isClosed 
11a90 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d  = false;..    }.
11aa0 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c  ...    ~Critical
11ab0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d  Handle()..    {.
11ac0 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66  .      Dispose(f
11ad0 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  alse);..    }...
11ae0 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69  .    private voi
11af0 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20  d Cleanup()..   
11b00 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49   {..      if (!I
11b10 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  sClosed)..      
11b20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  {..        this.
11b30 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
11b40 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ;..        if (!
11b50 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20  IsInvalid)..    
11b60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11b70 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
11b80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e  ;..          GC.
11b90 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
11ba0 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
11bb0 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   }..      }..   
11bc0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
11bd0 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20   void Close().. 
11be0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
11bf0 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
11c00 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
11c10 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a  void Dispose()..
11c20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
11c30 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
11c40 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
11c50 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
11c60 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
11c70 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d  sposing)..    {.
11c80 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29  .      Cleanup()
11c90 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
11ca0 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72 61  protected abstra
11cb0 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  ct bool ReleaseH
11cc0 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
11cd0 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53  protected void S
11ce0 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  etHandle(IntPtr 
11cf0 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  value)..    {.. 
11d00 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61       handle = va
11d10 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lue;..    }.... 
11d20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
11d30 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
11d40 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  d()..    {..    
11d50 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72    _isClosed = tr
11d60 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75  ue;..      GC.Su
11d70 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
11d80 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  his);..    }....
11d90 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
11da0 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d  IsClosed..    {.
11db0 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74  .      get { ret
11dc0 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d  urn _isClosed; }
11dd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
11de0 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 62  ublic abstract b
11df0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
11e00 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b     {..      get;
11e10 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a  ..    }....  }..
11e20 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
11e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
11e80 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
11e90 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
11ea0 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
11eb0 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61  Handles the unma
11ec0 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70  naged database p
11ed0 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76  ointer, and prov
11ee0 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
11ef0 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72  n..    // suppor
11f00 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69  t for it...    i
11f10 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
11f20 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65  lass SQLiteConne
11f30 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72  ctionHandle : Cr
11f40 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
11f50 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
11f60 53 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41  STANDARD && !PLA
11f70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11f80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
11f90 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
11fa0 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e  e void CloseConn
11fb0 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d  ectionCallback(.
11fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
11fd0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
11fe0 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20  dle hdl, IntPtr 
11ff0 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  db);....        
12000 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12010 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43  CloseConnectionC
12020 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e  allback closeCon
12030 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20  nection =..     
12040 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
12050 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
12060 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  n;..#endif....  
12070 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
120c0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
120d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
120e0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
120f0 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
12100 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
12110 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
12120 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
12130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12170 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12180 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e  private bool own
12190 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Handle;....     
121a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
121f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
12200 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
12210 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
12220 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
12230 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20  dle db)..       
12240 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12250 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d  if (db != null).
12260 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
12270 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
12280 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
122a0 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74  ock (db.syncRoot
122b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
122c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64    return db.hand
122f0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
12300 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12320 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
12330 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
12340 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
12350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
123a0 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43  internal SQLiteC
123b0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28  onnectionHandle(
123c0 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20  IntPtr db, bool 
123d0 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
123e0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f          : this(o
123f0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
12400 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
12410 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12420 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
12430 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
12440 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
12450 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12460 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77           this.ow
12470 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e  nHandle = ownHan
12480 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
12490 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
124a0 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  db);..          
124b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
124c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12510 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
12520 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
12530 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c  ctionHandle(bool
12540 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20   ownHandle)..   
12550 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
12560 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
12570 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
12580 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
12590 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61         if (ownHa
125a0 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
125b0 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
125c0 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
125d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
125e0 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
125f0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
12600 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12610 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12660 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
12670 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
12680 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
12690 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
126a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
126b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
126c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
126d0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
126e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12700 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72  f (!ownHandle) r
12710 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
12720 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12730 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
12740 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
12750 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12760 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
12780 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
12790 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
127a0 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
127c0 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
127d0 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53  .Zero);....#if S
127e0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
127f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12800 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
12810 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
12820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12830 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63       closeConnec
12840 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
12850 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d  Handle);..#else.
12860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12870 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
12880 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
12890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
128b0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
128c0 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
128d0 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  le);..#endif....
128e0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
128f0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
12900 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
12910 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
12920 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12940 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
12950 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
12960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12970 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
12980 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c  onnection: {0}",
12990 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d   localHandle));.
129a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
129b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
129c0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
129d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
129e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
129f0 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
12a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a10 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
12a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12a40 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
12a50 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
12a60 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
12a70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a90 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
12aa0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
12ab0 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ad0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
12ae0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
12af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12b10 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
12b20 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
12b30 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
12b40 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
12b50 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
12b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12b70 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
12b80 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
12b90 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
12ba0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
12bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12bc0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
12bd0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
12be0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
12bf0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
12c00 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
12c10 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
12c20 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
12c30 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
12c40 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
12c50 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
12c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
12c70 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
12c80 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
12c90 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
12ca0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12cb0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cd0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12ce0 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
12cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d00 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
12d10 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c  Connection: {0},
12d20 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
12d30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12d40 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
12d50 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  e, e));..       
12d60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12d70 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
12d80 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
12d90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12da0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
12db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
12dd0 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
12de0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
12df0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12e00 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
12e10 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
12e20 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
12e30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e50 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
12e60 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
12e70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12e80 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
12e90 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
12ea0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
12eb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
12ec0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
12ed0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
12ee0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
12f40 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
12f50 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
12f60 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
12f70 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12f80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
12f90 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
12fa0 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
12fb0 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
12fc0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63  eNativeMethods.c
12fd0 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
12fe0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
12ff0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
13000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13050 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
13060 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
13070 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
13080 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
13090 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
130a0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
130b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
130c0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
130d0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
130e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
130f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13100 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13110 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
13120 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13140 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13150 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13160 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
131a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
131b0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
131c0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
131d0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
131e0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
131f0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
13200 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13210 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
13220 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
13230 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
13240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13250 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
13260 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
13270 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13280 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
13290 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
132a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13300 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
13310 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c  atementHandle Cl
13320 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76  ass..    // Prov
13330 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
13340 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
13350 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
13360 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20  tatements...    
13370 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
13380 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74  class SQLiteStat
13390 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72  ementHandle : Cr
133a0 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
133b0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
133c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
133d0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
133e0 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
133f0 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
13400 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
13410 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
13420 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13460 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13470 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
13480 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
13490 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
134a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
134f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
13500 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
13510 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
13520 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
13530 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  le stmt)..      
13540 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13550 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c   if (stmt != nul
13560 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
13570 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
13580 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
135a0 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e    lock (stmt.syn
135b0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
135e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74         return st
135f0 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  mt.handle;..    
13600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13610 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13620 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13630 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
13640 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13650 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
136a0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
136b0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
136c0 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
136d0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
136e0 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a  , IntPtr stmt)..
136f0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
13700 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
13710 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
13720 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13730 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
13740 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
13750 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
13760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13770 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
13780 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
13790 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73       SetHandle(s
137a0 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tmt);..         
137b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
137c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
137d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
13820 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74  ivate SQLiteStat
13830 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20  ementHandle().. 
13840 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
13850 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
13860 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
13870 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
13880 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
13890 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d  cked.Increment(.
138a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
138b0 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
138c0 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
138d0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
138e0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
138f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13940 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
13950 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
13960 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
13970 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
13980 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
13990 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
139a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
139b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
139c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
139d0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
139e0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
139f0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
13a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13a10 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
13a20 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
13a30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13a40 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
13a50 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
13a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a70 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
13a80 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
13a90 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
13aa0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
13ab0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
13ac0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
13ad0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b00 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
13b10 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
13b20 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
13b40 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
13b50 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
13b60 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le));..         
13b70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13b80 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
13b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ba0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13bb0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
13bc0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
13bd0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
13be0 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
13bf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13c10 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
13c20 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
13c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13c50 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
13c60 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
13c70 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c  ement(cnn, handl
13c80 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13c90 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
13ca0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
13cb0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
13cc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13ce0 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
13cf0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
13d00 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
13d10 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
13d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d30 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
13d40 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
13d50 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
13d60 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
13d70 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
13d80 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
13d90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13da0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
13db0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
13dc0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
13dd0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
13de0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
13df0 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
13e00 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
13e10 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
13e20 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13e30 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
13e40 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
13e50 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
13e60 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
13e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13e90 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
13ea0 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
13eb0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ed0 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
13ee0 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
13ef0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
13f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f10 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d     handle, e));.
13f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13f40 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
13f50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13f70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13f80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13f90 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
13fa0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
13fb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13fc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
13fd0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
13fe0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
13ff0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
14000 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14010 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
14020 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
14030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14040 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14050 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
14060 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14070 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
14080 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
14090 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
140a0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
140b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
140c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14100 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
14110 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
14120 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
14130 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
14140 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14150 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
14160 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
14180 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
14190 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74  ethods.statement
141a0 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
141b0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
141c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
141d0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
14210 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14220 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
14230 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
14240 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14250 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
14260 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
14270 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14280 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
14290 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
142a0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
142b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
142c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
142d0 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
142e0 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
142f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14300 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14310 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
14320 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
14330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14370 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
14380 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14390 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
143a0 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
143b0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
143c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
143d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
143e0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
143f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
14400 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14410 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14420 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
14430 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
14440 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
14450 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
14460 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14470 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
144c0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
144d0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
144e0 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
144f0 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
14500 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
14510 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
14520 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  te backup object
14530 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
14540 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
14550 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
14560 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
14570 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
14580 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14590 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
145a0 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
145b0 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
145c0 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
145d0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
145e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
145f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14630 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
14640 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
14650 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
14660 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
146b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
146c0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
146d0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
146e0 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  r(SQLiteBackupHa
146f0 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20  ndle backup)..  
14700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14710 20 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20       if (backup 
14720 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
14730 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
14740 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14750 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
14760 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61          lock (ba
14770 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  ckup.syncRoot)..
14780 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14790 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
147a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
147b0 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e  eturn backup.han
147c0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
147d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
147e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
147f0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
14800 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
14810 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14860 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14870 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
14880 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c  BackupHandle(SQL
14890 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
148a0 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
148b0 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
148c0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
148d0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
148e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
148f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
14900 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
14910 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
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 74 68 69               thi
14940 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
14950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
14960 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b  tHandle(backup);
14970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14980 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
14990 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
149a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
149e0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
149f0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
14a00 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  dle()..         
14a10 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
14a20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
14a30 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
14a40 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
14a50 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
14a60 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
14a70 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
14a80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
14a90 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
14aa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14ab0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
14ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
14b10 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
14b20 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
14b30 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
14b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14b50 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
14b60 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
14b70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14b80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
14b90 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
14ba0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
14bb0 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
14bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bd0 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
14be0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
14bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14c00 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
14c10 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
14c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14c30 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
14c40 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
14c50 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
14c60 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
14c70 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
14c80 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
14c90 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
14ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14cc0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
14cd0 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
14ce0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
14cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
14d00 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
14d10 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
14d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d30 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14d40 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
14d50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14d70 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
14d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14d90 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
14da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14db0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14dc0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
14dd0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
14de0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
14df0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e10 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
14e20 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
14e30 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
14e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e50 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
14e60 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
14e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
14e90 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
14ea0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
14eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ec0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
14ed0 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
14ee0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
14ef0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
14f00 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
14f10 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
14f20 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
14f30 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
14f40 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
14f50 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
14f60 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
14f70 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
14f80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
14f90 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
14fa0 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
14fb0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
14fc0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
14fd0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
14fe0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
14ff0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
15000 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
15020 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
15030 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15040 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
15050 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
15060 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
15070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15080 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
15090 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
150a0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
150b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150c0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20   handle, e));.. 
150d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
150e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
150f0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
15100 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15110 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
15120 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
15130 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15140 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
15150 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
15160 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15170 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
15180 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
15190 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
151a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
151c0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
151d0 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
151e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
15200 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
15210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15220 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
15230 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15240 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
15250 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
15260 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
152b0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
152c0 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
152d0 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
152e0 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
152f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
15300 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
15310 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
15320 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
15330 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
15340 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
15350 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
15360 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
15370 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
153c0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
153d0 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
153e0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
153f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
15400 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
15410 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
15420 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
15440 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
15450 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
15460 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15480 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
15490 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
154b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
154c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
154d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15520 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
15530 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
15540 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
15550 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
15560 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
15570 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15580 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
15590 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
155a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
155b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
155c0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
155d0 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
155e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
155f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
15600 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
15610 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..