System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 04138ade1f1f62f4540c0d0bce47f6f6e55a2606:


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 70 72 69 76 61 74 65 20 63  /..    private c
5940: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
5950: 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65  TE_DLL = "sqlite
5960: 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49  3";..#elif USE_I
5970: 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20  NTEROP_DLL..    
5980: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
5990: 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
59a0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
59b0: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
59c0: 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20  y is enabled,.. 
59d0: 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
59e0: 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  it...    //..   
59f0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
5a00: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
5a10: 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
5a20: 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d  op.dll";..#else.
5a30: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
5a40: 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61  NOTE: Finally, a
5a50: 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d  ssume that the m
5a60: 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62  ixed-mode assemb
5a70: 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73 65 64  ly is being used
5a80: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 70  ...    //..    p
5a90: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
5aa0: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
5ab0: 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
5ac0: 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64  Lite.dll";..#end
5ad0: 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69  if....    // Thi
5ae0: 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69  s section uses i
5af0: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61  nterop calls tha
5b00: 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78  t also fetch tex
5b10: 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69  t length to opti
5b20: 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e  mize conversion.
5b30: 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73  ..    // When us
5b40: 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
5b50: 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70   dll, we can rep
5b60: 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73  lace these calls
5b70: 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c   with normal sql
5b80: 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20  ite calls and.. 
5b90: 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d     // do unoptim
5ba0: 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73  ized conversions
5bb0: 20 69 6e 73 74 65 61 64 20 61 66 74 65 72 77 61   instead afterwa
5bc0: 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  rds..    #region
5bd0: 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74   interop added t
5be0: 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d  extlength calls.
5bf0: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
5c00: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
5c10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5c20: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
5c30: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5c40: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5c50: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
5c60: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
5c70: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
5c80: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
5c90: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
5ca0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5cb0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
5cc0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5cd0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
5ce0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
5cf0: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
5d00: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5d10: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5d20: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5d30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5d40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5d50: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
5d60: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
5d70: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
5d80: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
5d90: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5da0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
5db0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
5dc0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5dd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5de0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
5df0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
5e00: 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f  _decltype_intero
5e10: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
5e20: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
5e30: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
5e40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5e50: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
5e60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5e70: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5e80: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
5e90: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
5ea0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
5eb0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
5ec0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5ed0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5ee0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5ef0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5f00: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5f10: 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  mn_name_interop(
5f20: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5f30: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5f40: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5f50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5f60: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5f70: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5f80: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5f90: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e  column_name16_in
5fa0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
5fb0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
5fc0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5fd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5fe0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5ff0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6000: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
6010: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
6020: 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  gin_name_interop
6030: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6040: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
6050: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
6060: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6070: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6080: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6090: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
60a0: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
60b0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
60c0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
60d0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
60e0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
60f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6100: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6110: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6120: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6130: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f  lumn_table_name_
6140: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6150: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
6160: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
6170: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6180: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
6190: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
61a0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
61b0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
61c0: 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  able_name16_inte
61d0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
61e0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
61f0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
6200: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6210: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6220: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6230: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
6240: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f  te3_column_text_
6250: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6260: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
6270: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
6280: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6290: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
62a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
62b0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
62c0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
62d0: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
62e0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
62f0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
6300: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
6310: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6320: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6330: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6340: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
6350: 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rmsg_interop(Int
6360: 50 74 72 20 64 62 2c 20 6f 75 74 20 69 6e 74 20  Ptr db, out int 
6370: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
6380: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6390: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
63a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
63b0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
63c0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
63d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
63e0: 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
63f0: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74   int nBytes, out
6400: 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75   IntPtr stmt, ou
6410: 74 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  t IntPtr ptrRema
6420: 69 6e 2c 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d  in, out int nRem
6430: 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  ain);....    [Dl
6440: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6450: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6460: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6470: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6480: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
6490: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69  olumn_metadata_i
64a0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
64b0: 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
64c0: 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
64d0: 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
64e0: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44   out IntPtr ptrD
64f0: 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74  ataType, out Int
6500: 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20  Ptr ptrCollSeq, 
6510: 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c  out int notNull,
6520: 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79   out int primary
6530: 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74  Key, out int aut
6540: 6f 49 6e 63 2c 20 6f 75 74 20 69 6e 74 20 64 74  oInc, out int dt
6550: 4c 65 6e 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c  Len, out int csL
6560: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
6570: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6580: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6590: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
65a0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
65b0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
65c0: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
65d0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
65e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
65f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6600: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6610: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
6620: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
6630: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
6640: 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  p, out int len);
6650: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
6660: 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
6670: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6680: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6690: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
66a0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
66b0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
66c0: 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
66d0: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
66e0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
66f0: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
6700: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
6710: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
6720: 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
6730: 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
6740: 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
6750: 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
6760: 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
6770: 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
6780: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
6790: 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
67a0: 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
67b0: 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
67c0: 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
67d0: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
67e0: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
67f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6800: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6810: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
6820: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
6830: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74  qlite3_close_int
6840: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
6850: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
6860: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6870: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6880: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
6890: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
68a0: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
68b0: 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ion_interop(IntP
68c0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
68d0: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
68e0: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
68f0: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
6900: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
6910: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
6920: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
6930: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
6940: 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53  l, int needCollS
6950: 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  eq);....    [Dll
6960: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6970: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6980: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6990: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
69a0: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
69b0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
69c0: 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  stmt);....    [D
69d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
69e0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
69f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6a00: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
6a10: 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
6a20: 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28  _finish_interop(
6a30: 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
6a40: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
6a50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6a60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6a70: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
6a80: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6a90: 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
6aa0: 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
6ab0: 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
6ac0: 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
6ad0: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  out IntPtr db);.
6ae0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
6af0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6b00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6b10: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
6b20: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6b30: 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
6b40: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
6b50: 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  ename, SQLiteOpe
6b60: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
6b70: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29  , out IntPtr db)
6b80: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
6b90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6ba0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6bb0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
6bc0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
6bd0: 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72  ite3_reset_inter
6be0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  op(IntPtr stmt);
6bf0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
6c00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6c10: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6c20: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
6c30: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f  sqlite3_changes_
6c40: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
6c50: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  b);..#endif..// 
6c60: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
6c70: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
6c80: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
6c90: 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63 61   standard api ca
6ca0: 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f  ll equivalents o
6cb0: 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65  f the above inte
6cc0: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23  rop calls..    #
6cd0: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
6ce0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65  versions of inte
6cf0: 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d  rop functions...
6d00: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
6d10: 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  DARD....#if !PLA
6d20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6d30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6d40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6d50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6d60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6d70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6d80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6d90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6da0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6db0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6dc0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
6dd0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
6de0: 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62  _close(IntPtr db
6df0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52  );....#if !INTER
6e00: 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d  OP_LEGACY_CLOSE.
6e10: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6e20: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6e30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6e40: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6e50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6e60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6e70: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
6e80: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6e90: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
6ea0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
6eb0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6ec0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
6ed0: 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  e sqlite3_close_
6ee0: 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f  v2(IntPtr db); /
6ef0: 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65  * 3.7.14+ */..#e
6f00: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
6f10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6f20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6f30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6f40: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6f50: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6f60: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6f70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6f80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6f90: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6fa0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6fb0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
6fc0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
6fd0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
6fe0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
6ff0: 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
7000: 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
7010: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
7020: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
7030: 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
7040: 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
7050: 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
7060: 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20  ffinal);....#if 
7070: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7080: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7090: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
70a0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
70b0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
70c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
70d0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
70e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
70f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7100: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7110: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
7120: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
7130: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e  ite3_finalize(In
7140: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
7150: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7160: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7170: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7180: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7190: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
71a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
71b0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
71c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
71d0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
71e0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
71f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7200: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
7210: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
7220: 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61 63  inish(IntPtr bac
7230: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
7240: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7250: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7260: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7270: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7280: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7290: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
72a0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
72b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
72c0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
72d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
72e0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
72f0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
7300: 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73  3_reset(IntPtr s
7310: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
7320: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7330: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7340: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7350: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7360: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7370: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7380: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7390: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
73a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
73b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
73c0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
73d0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
73e0: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74  rameter_name(Int
73f0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
7400: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
7410: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7420: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7430: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7440: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7450: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7460: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7470: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7480: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7490: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
74a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
74b0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
74c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
74d0: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e  database_name(In
74e0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
74f0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7500: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7510: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7520: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7530: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7540: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7550: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7560: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7570: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7580: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7590: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
75a0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
75b0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
75c0: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
75d0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
75e0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
75f0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7600: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7610: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7620: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7630: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7640: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7650: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7660: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7670: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7680: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7690: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
76a0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
76b0: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74  umn_decltype(Int
76c0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
76d0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
76e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
76f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7700: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7710: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7720: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7730: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7740: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7750: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7760: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7770: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7780: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7790: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
77a0: 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74  decltype16(IntPt
77b0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
77c0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
77d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
77e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
77f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7800: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7810: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7820: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7830: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7840: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7850: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7860: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7870: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
7880: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
7890: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
78a0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
78b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
78c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
78d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
78e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
78f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7900: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7910: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7930: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7940: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7950: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7960: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
7970: 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  olumn_name16(Int
7980: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
7990: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
79a0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
79b0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
79c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
79d0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
79e0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
79f0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7a00: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7a10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7a20: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7a30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7a40: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7a50: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
7a60: 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50  origin_name(IntP
7a70: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
7a80: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
7a90: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7aa0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7ab0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7ac0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
7ad0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
7ae0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
7af0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
7b00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7b10: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
7b20: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7b30: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7b40: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
7b50: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  rigin_name16(Int
7b60: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
7b70: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
7b80: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7b90: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7ba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7bb0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7bc0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7bd0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7be0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7bf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7c00: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7c10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7c20: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7c30: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
7c40: 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74  table_name(IntPt
7c50: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
7c60: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
7c70: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7c80: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7c90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7ca0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7cb0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7cc0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7cd0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7ce0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7cf0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7d00: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7d10: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
7d20: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
7d30: 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  ble_name16(IntPt
7d40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
7d50: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
7d60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7d70: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7d80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7d90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7da0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7db0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7dc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7dd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7de0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7df0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7e00: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
7e10: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
7e20: 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  xt(IntPtr stmt, 
7e30: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
7e40: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7e50: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7e60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7e70: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7e80: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7e90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7ea0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7eb0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7ec0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7ed0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7ee0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7ef0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
7f00: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74  olumn_text16(Int
7f10: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
7f20: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
7f30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7f40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7f50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7f60: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7f70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7f80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7f90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7fa0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7fb0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7fc0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7fd0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7fe0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
7ff0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
8000: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8010: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8020: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8030: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8040: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8050: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8060: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8070: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8080: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8090: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
80a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
80b0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
80c0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
80d0: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
80e0: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
80f0: 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73  es, out IntPtr s
8100: 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tmt, out IntPtr 
8110: 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23  ptrRemain);....#
8120: 69 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56  if USE_PREPARE_V
8130: 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  2..#if !PLATFORM
8140: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8150: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8160: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8170: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8180: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8190: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
81a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
81b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
81c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
81d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
81e0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
81f0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
8200: 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62  are_v2(IntPtr db
8210: 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
8220: 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49  nt nBytes, out I
8230: 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20  ntPtr stmt, out 
8240: 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
8250: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
8260: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8270: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8280: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8290: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
82a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
82b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
82c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
82d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
82e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
82f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8300: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8310: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8320: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
8330: 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74  umn_metadata(Int
8340: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
8350: 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
8360: 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f  lName, byte[] co
8370: 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  lName, out IntPt
8380: 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f  r ptrDataType, o
8390: 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c  ut IntPtr ptrCol
83a0: 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f  lSeq, out int no
83b0: 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70  tNull, out int p
83c0: 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69  rimaryKey, out i
83d0: 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a  nt autoInc);....
83e0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
83f0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8400: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8410: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8420: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
8430: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8440: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8450: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8460: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8470: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8480: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8490: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
84a0: 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74  value_text(IntPt
84b0: 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
84c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
84d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
84e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
84f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8500: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8510: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8520: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8530: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8540: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8550: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8560: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
8570: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
8580: 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b  ext16(IntPtr p);
8590: 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  ....#endif..    
85a0: 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  // SQLITE_STANDA
85b0: 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
85c0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
85d0: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hese functions a
85e0: 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61  re custom and ha
85f0: 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74  ve no equivalent
8600: 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72   standard librar
8610: 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f  y method...    /
8620: 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72  / All of them ar
8630: 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73  e "nice to haves
8640: 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73  " and not necess
8650: 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68  arily "need to h
8660: 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67  aves"...    #reg
8670: 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ion no equivalen
8680: 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f  t standard metho
8690: 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  d....#if !SQLITE
86a0: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
86b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
86c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
86d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
86e0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
86f0: 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c  te3_context_coll
8700: 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  seq_interop(IntP
8710: 74 72 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20  tr context, out 
8720: 69 6e 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e  int type, out in
8730: 74 20 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c  t enc, out int l
8740: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
8750: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8760: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8770: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8780: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  int sqlite3_cont
8790: 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f  ext_collcompare_
87a0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
87b0: 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70  ontext, byte[] p
87c0: 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79  1, int p1len, by
87d0: 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c  te[] p2, int p2l
87e0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
87f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8800: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8810: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8820: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8830: 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72  sqlite3_cursor_r
8840: 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
8850: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75  Ptr stmt, int cu
8860: 72 73 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72  rsor, out long r
8870: 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owid);....    [D
8880: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8890: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
88a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
88b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
88c0: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
88d0: 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65  column_info_inte
88e0: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
88f0: 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62  yte[] catalog, b
8900: 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c  yte[] IndexName,
8910: 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61   byte[] ColumnNa
8920: 6d 65 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72 74  me, out int sort
8930: 4f 72 64 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f  Order, out int o
8940: 6e 45 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50  nError, out IntP
8950: 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75  tr Collation, ou
8960: 74 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d  t int colllen);.
8970: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8980: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8990: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
89a0: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
89b0: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c  sqlite3_resetall
89c0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
89d0: 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
89e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
89f0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8a00: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8a10: 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  int sqlite3_tabl
8a20: 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70  e_cursor_interop
8a30: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
8a40: 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52  t db, int tableR
8a50: 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e  ootPage);....#en
8a60: 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
8a70: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
8a80: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8a90: 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50    // Standard AP
8aa0: 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61  I calls global a
8ab0: 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20  cross versions. 
8ac0: 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77   There are a few
8ad0: 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e   instances of in
8ae0: 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
8af0: 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e   // scattered in
8b00: 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20   here, but they 
8b10: 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20  are only active 
8b20: 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  when PLATFORM_CO
8b30: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69  MPACTFRAMEWORK i
8b40: 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  s declared...   
8b50: 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
8b60: 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c  d sqlite api cal
8b70: 6c 73 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ls..#if !PLATFOR
8b80: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8b90: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8ba0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8bb0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8bc0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8bd0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8be0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8bf0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8c00: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8c10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8c20: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8c30: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
8c40: 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
8c50: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
8c60: 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62  Ptr db, int enab
8c70: 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  le);....#if !PLA
8c80: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8c90: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8ca0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8cb0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8cc0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8cd0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8ce0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8cf0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8d00: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8d10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8d20: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8d30: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8d40: 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
8d50: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
8d60: 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65   db, byte[] file
8d70: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f  Name, byte[] pro
8d80: 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  cName, ref IntPt
8d90: 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69  r pError);....#i
8da0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8db0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8dc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8dd0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8de0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8df0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8e00: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
8e10: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
8e20: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8e30: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8e40: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
8e50: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
8e60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8e70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8e80: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8e90: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
8ea0: 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
8eb0: 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
8ec0: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
8ed0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8ee0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8ef0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8f00: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8f10: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8f20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8f30: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8f40: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8f50: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8f60: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8f70: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8f80: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69  ntPtr sqlite3_li
8f90: 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23  bversion();....#
8fa0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8fb0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8fc0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8fd0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8fe0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8ff0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9000: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9010: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9020: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9030: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9040: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9050: 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  int sqlite3_libv
9060: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b  ersion_number();
9070: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9080: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9090: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
90a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
90b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
90c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
90d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
90e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
90f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9100: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9110: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9120: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
9130: 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  te3_sourceid();.
9140: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9150: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9160: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9170: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9180: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9190: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
91a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
91b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
91c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
91d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
91e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
91f0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
9200: 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29  e3_malloc(int n)
9210: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9220: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9230: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9240: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9250: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9260: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9270: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9280: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9290: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
92a0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
92b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
92c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
92d0: 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
92e0: 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
92f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9300: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9310: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9320: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9330: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9340: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9350: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9360: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9370: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9380: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9390: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
93a0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
93b0: 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
93c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
93d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
93e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
93f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9400: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9410: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9420: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9430: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9440: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9450: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9460: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9470: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
9480: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
9490: 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
94a0: 69 6c 65 6e 61 6d 65 2c 20 6f 75 74 20 49 6e 74  ilename, out Int
94b0: 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
94c0: 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
94d0: 73 2c 20 49 6e 74 50 74 72 20 76 66 73 29 3b 0d  s, IntPtr vfs);.
94e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
94f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9500: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9510: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9520: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9530: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9540: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
9550: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
9560: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
9570: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9580: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
9590: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
95a0: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
95b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
95c0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
95d0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
95e0: 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20  3_open16(string 
95f0: 66 69 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e  fileName, out In
9600: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
9610: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9620: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9630: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9640: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9650: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9660: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9670: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9680: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9690: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
96a0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
96b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
96c0: 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  id sqlite3_inter
96d0: 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b  rupt(IntPtr db);
96e0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
96f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9700: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9710: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9720: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9730: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9740: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
9750: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9760: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
9770: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
9780: 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64  t_rowid(IntPtr d
9790: 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  b);..#else..    
97a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
97b0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
97c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
97d0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
97e0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
97f0: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
9800: 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72  r db, ref long r
9810: 6f 77 49 64 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  owId);..#endif..
9820: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9830: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9840: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9850: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9860: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9870: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9880: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9890: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
98a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
98b0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
98c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
98d0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
98e0: 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62  hanges(IntPtr db
98f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9900: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9910: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9920: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9930: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9940: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9950: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9960: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9970: 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
9980: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
9990: 73 65 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  sed();..#else.. 
99a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
99b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
99c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
99d0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
99e0: 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f  te3_memory_used_
99f0: 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67  interop(ref long
9a00: 20 62 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66   bytes);..#endif
9a10: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9a20: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9a30: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9a40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9a50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9a60: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9a70: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
9a80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9a90: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
9aa0: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
9ab0: 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74  hwater(int reset
9ac0: 46 6c 61 67 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  Flag);..#else.. 
9ad0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9ae0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
9af0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9b00: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
9b10: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
9b20: 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
9b30: 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
9b40: 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23 65  long bytes);..#e
9b50: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
9b60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9b70: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9b80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9b90: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9ba0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9bb0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9bc0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9bd0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9be0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9bf0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9c00: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9c10: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9c20: 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
9c30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9c40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9c50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9c60: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9c70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9c80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9c90: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9ca0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9cb0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9cc0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9cd0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9ce0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
9cf0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
9d00: 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c  meout(IntPtr db,
9d10: 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66   int ms);....#if
9d20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9d30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9d40: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9d50: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9d60: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9d70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9d80: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9d90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9da0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9db0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9dc0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9dd0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9de0: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
9df0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
9e00: 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76   index, Byte[] v
9e10: 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
9e20: 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65   IntPtr nTransie
9e30: 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nt);....#if !PLA
9e40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9e50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9e60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9e70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9e80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9e90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9ea0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9eb0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9ec0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9ed0: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9ee0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9ef0: 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
9f00: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
9f10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9f20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
9f30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9f40: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
9f50: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
9f60: 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
9f70: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
9f80: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
9f90: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
9fa0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9fb0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9fc0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9fd0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9fe0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9ff0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a000: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a010: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a020: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a030: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a040: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a050: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
a060: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
a070: 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50  e3_bind_int(IntP
a080: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a090: 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  ex, int value);.
a0a0: 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  ...    //..    /
a0b0: 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61  / NOTE: This rea
a0c0: 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22  lly just calls "
a0d0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
a0e0: 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68  "; however, it h
a0f0: 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  as the..    //  
a100: 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70       correct typ
a110: 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20  e signature for 
a120: 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d  an unsigned (32-
a130: 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20  bit) integer... 
a140: 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54     //..#if !PLAT
a150: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a160: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a170: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a180: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
a190: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
a1a0: 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
a1b0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a1c0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a1d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a1e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a1f0: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
a200: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
a210: 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  nt")]..#endif.. 
a220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a230: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
a240: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
a250: 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50  3_bind_uint(IntP
a260: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a270: 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b  ex, uint value);
a280: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a290: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a2a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a2b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a2c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a2d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a2e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
a2f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a300: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
a310: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
a320: 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50  _bind_int64(IntP
a330: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a340: 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ex, long value);
a350: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a360: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a370: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
a380: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a390: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
a3a0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
a3b0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
a3c0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a3d0: 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
a3e0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
a3f0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
a400: 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
a410: 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
a420: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22  ite3_bind_int64"
a430: 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
a440: 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
a450: 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
a460: 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
a470: 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  n unsigned long 
a480: 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (64-bit) integer
a490: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
a4a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a4b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a4d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
a4e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
a4f0: 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67  _int64", Calling
a500: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a510: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a520: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
a530: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a540: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
a550: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
a560: 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  uint64(IntPtr st
a570: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
a580: 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
a590: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a5a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a5b0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
a5c0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
a5d0: 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20  _interop")]..   
a5e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a5f0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a600: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a610: 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65  bind_uint64_inte
a620: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
a630: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
a640: 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23  ulong value);..#
a650: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
a660: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a670: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a680: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a690: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a6a0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a6b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a6c0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
a6d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a6e0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
a6f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a700: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
a710: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
a720: 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50  3_bind_null(IntP
a730: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a740: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
a750: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a760: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a770: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a780: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a790: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a7a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a7b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a7c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a7d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
a7e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a7f0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
a800: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
a810: 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74  _bind_text(IntPt
a820: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
a830: 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, byte[] value,
a840: 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
a850: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
a860: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
a870: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
a880: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a890: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
a8a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
a8b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a8c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
a8d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
a8e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
a8f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
a900: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a910: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
a920: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
a930: 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
a940: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
a950: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a960: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
a970: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a980: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a990: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
a9a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
a9b0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
a9c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a9d0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
a9e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a9f0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
aa00: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
aa10: 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74  _index(IntPtr st
aa20: 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  mt, byte[] strNa
aa30: 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
aa40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
aa50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
aa60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
aa70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
aa80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
aa90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
aaa0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
aab0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
aac0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
aad0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
aae0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
aaf0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
ab00: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
ab10: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ab20: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ab30: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ab40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ab50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ab60: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ab70: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ab80: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ab90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
aba0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
abb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
abc0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
abd0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ode sqlite3_step
abe0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
abf0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ac00: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ac10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ac20: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ac30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ac40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ac50: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
ac60: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ac70: 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
ac80: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
ac90: 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
aca0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
acb0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
acc0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
acd0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ace0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
acf0: 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  d sqlite3_column
ad00: 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
ad10: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
ad20: 20 69 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75 62   index, out doub
ad30: 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
ad40: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
ad50: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ad60: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
ad70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ad80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ad90: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ada0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
adb0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
adc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
add0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ade0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
adf0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
ae00: 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e  e3_column_int(In
ae10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
ae20: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
ae30: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ae40: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
ae50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ae60: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ae70: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ae80: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ae90: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
aea0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
aeb0: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ong sqlite3_colu
aec0: 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  mn_int64(IntPtr 
aed0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
aee0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
aef0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
af00: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
af10: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
af20: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
af30: 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65  olumn_int64_inte
af40: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
af50: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
af60: 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
af70: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
af80: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
af90: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
afa0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
afb0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
afc0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
afd0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
afe0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
aff0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b000: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
b010: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b020: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b030: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
b040: 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  lob(IntPtr stmt,
b050: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
b060: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
b070: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
b080: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b090: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
b0a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b0b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b0c0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
b0d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b0e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
b0f0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
b100: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b110: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
b120: 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72  umn_bytes(IntPtr
b130: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
b140: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b150: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b160: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b170: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b180: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b190: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b1a0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b1b0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b1c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b1d0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b1e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b1f0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
b200: 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31  e3_column_bytes1
b210: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
b220: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
b230: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b240: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b260: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
b270: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b280: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
b290: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
b2a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b2b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
b2c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
b2d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54   static extern T
b2e0: 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69  ypeAffinity sqli
b2f0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28  te3_column_type(
b300: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
b310: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
b320: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
b330: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
b340: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b350: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
b360: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
b370: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
b380: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
b390: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b3a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
b3b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b3c0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
b3d0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
b3e0: 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
b3f0: 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ation(IntPtr db,
b400: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
b410: 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
b420: 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
b430: 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29  eCollation func)
b440: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b450: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b460: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b470: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b480: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b490: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b4a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b4b0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b4c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b4d0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b4e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b4f0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b500: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
b510: 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
b520: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b530: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b540: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b550: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b560: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b570: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b580: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b590: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b5a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b5b0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b5c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b5d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
b5e0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62  lite3_value_blob
b5f0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
b600: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b610: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b620: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b630: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b640: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b650: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b660: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b670: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b680: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b690: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b6a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b6b0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
b6c0: 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 70  e_bytes(IntPtr p
b6d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b6e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b6f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b700: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b710: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b720: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b730: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b740: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b750: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b760: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b770: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b780: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
b790: 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36  e3_value_bytes16
b7a0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
b7b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b7c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b7d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b7e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b7f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b800: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b810: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
b820: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b830: 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
b840: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
b850: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73  IntPtr p);..#els
b860: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
b870: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b880: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b890: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
b8a0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
b8b0: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
b8c0: 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75 62 6c  Ptr p, out doubl
b8d0: 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
b8e0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
b8f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b900: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b910: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b920: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b930: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b940: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b950: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b960: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b970: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b980: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b990: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b9a0: 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50  3_value_int(IntP
b9b0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
b9c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b9d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b9e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b9f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ba00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ba10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ba20: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ba30: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
ba40: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ong sqlite3_valu
ba50: 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70  e_int64(IntPtr p
ba60: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  );..#else..    [
ba70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ba80: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
ba90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
baa0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
bab0: 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
bac0: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
bad0: 74 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  t Int64 value);.
bae0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
baf0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
bb00: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
bb10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bb20: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
bb30: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bb40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bb50: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
bb60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bb70: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
bb80: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bb90: 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65  atic extern Type
bba0: 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33  Affinity sqlite3
bbb0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50  _value_type(IntP
bbc0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
bbd0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
bbe0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
bbf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bc00: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
bc10: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
bc20: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
bc30: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
bc40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bc50: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
bc60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
bc70: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
bc80: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62  sqlite3_result_b
bc90: 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
bca0: 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
bcb0: 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
bcc0: 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
bcd0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
bce0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
bcf0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
bd00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
bd10: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
bd20: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
bd30: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
bd40: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bd50: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
bd60: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
bd70: 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ble(IntPtr conte
bd80: 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  xt, double value
bd90: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  );..#else..    [
bda0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bdb0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
bdc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bdd0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
bde0: 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
bdf0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
be00: 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65  text, ref double
be10: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
be20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
be30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
be40: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
be50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
be60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
be70: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
be80: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
be90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
bea0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
beb0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
bec0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
bed0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
bee0: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49  3_result_error(I
bef0: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
bf00: 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e  yte[] strErr, in
bf10: 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
bf20: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bf30: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bf40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bf50: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
bf60: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
bf70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
bf80: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
bf90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bfa0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
bfb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bfc0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
bfd0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
bfe0: 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50  _error_code(IntP
bff0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69  tr context, SQLi
c000: 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75  teErrorCode valu
c010: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
c020: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c030: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c040: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c050: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c060: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c070: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c080: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c090: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c0a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c0b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c0c0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c0d0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
c0e0: 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20  r_toobig(IntPtr 
c0f0: 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
c100: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c110: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c120: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c130: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c140: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c150: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c160: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c170: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c180: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c190: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c1a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
c1b0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
c1c0: 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e  t_error_nomem(In
c1d0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
c1e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c1f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c210: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c220: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c230: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c240: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c250: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c260: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c270: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c280: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c290: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
c2a0: 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74  result_value(Int
c2b0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74  Ptr context, Int
c2c0: 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  Ptr value);....#
c2d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c2e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c2f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c300: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c310: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c320: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c330: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
c340: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c350: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
c360: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
c370: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
c380: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
c390: 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74  ult_zeroblob(Int
c3a0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
c3b0: 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
c3c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c3d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c3e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c3f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c400: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c410: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c420: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c430: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c440: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c450: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c460: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
c470: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
c480: 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  int(IntPtr conte
c490: 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  xt, int value);.
c4a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c4b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c4c0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c4d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c4e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c4f0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c500: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
c510: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c520: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c530: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
c540: 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  4(IntPtr context
c550: 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
c560: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c570: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c580: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c590: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
c5a0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
c5b0: 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  lt_int64_interop
c5c0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c5d0: 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
c5e0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
c5f0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c600: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c610: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c620: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c630: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c640: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c650: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
c660: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c670: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
c680: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c690: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
c6a0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
c6b0: 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
c6c0: 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
c6d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c6e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c6f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c700: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c710: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c720: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c730: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c740: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c750: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c760: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c770: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
c780: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
c790: 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
c7a0: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
c7b0: 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
c7c0: 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
c7d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c7e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c7f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c800: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c810: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c820: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c830: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c840: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c850: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c860: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c870: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c880: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
c890: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
c8a0: 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
c8b0: 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
c8c0: 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
c8d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c8e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c8f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c900: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c910: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c920: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
c930: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
c940: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
c950: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c960: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
c970: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
c980: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
c990: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c9a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c9b0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c9c0: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
c9d0: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
c9e0: 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
c9f0: 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
ca00: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
ca10: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
ca20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ca30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ca40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ca50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ca60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ca70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
ca80: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
ca90: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
caa0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
cab0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cac0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
cad0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
cae0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
caf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
cb00: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
cb10: 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
cb20: 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
cb30: 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
cb40: 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
cb50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cb60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
cb70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cb80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
cb90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cba0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cbb0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
cbc0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
cbd0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cbe0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cbf0: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
cc00: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
cc10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
cc20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cc30: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
cc40: 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
cc50: 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
cc60: 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
cc70: 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
cc80: 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
cc90: 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d 0a   INTEROP_CODEC..
cca0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ccb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ccc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ccd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
cce0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ccf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cd00: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
cd10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cd20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
cd30: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
cd40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cd50: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
cd60: 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74   sqlite3_key(Int
cd70: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
cd80: 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
cd90: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
cda0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
cdb0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
cdc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
cdd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cde0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
cdf0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ce00: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ce10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ce20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ce30: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ce40: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
ce50: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b  Code sqlite3_rek
ce60: 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ey(IntPtr db, by
ce70: 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65  te[] key, int ke
ce80: 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ylen);..#endif..
ce90: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cea0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ceb0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cec0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ced0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cee0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cef0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cf00: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cf10: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cf20: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cf30: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cf40: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
cf50: 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e  3_update_hook(In
cf60: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55  tPtr db, SQLiteU
cf70: 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  pdateCallback fu
cf80: 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
cf90: 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
cfa0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
cfb0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
cfc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
cfd0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
cfe0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
cff0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d000: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d010: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d020: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d030: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d040: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
d050: 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f  qlite3_commit_ho
d060: 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
d070: 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61  LiteCommitCallba
d080: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
d090: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
d0a0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d0b0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d0c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d0d0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d0e0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d0f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d100: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d110: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d120: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d130: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d140: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d150: 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63  Ptr sqlite3_trac
d160: 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  e(IntPtr db, SQL
d170: 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b  iteTraceCallback
d180: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
d190: 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  User);....    //
d1a0: 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63   Since sqlite3_c
d1b0: 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61 20  onfig() takes a 
d1c0: 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e  variable argumen
d1d0: 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20  t list, we have 
d1e0: 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c  to overload decl
d1f0: 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  arations..    //
d200: 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
d210: 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20  e calls that we 
d220: 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69  want to use...#i
d230: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d240: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d260: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
d270: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
d280: 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
d290: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d2a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d2b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d2c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d2d0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
d2e0: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
d2f0: 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
d300: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d310: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
d320: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
d330: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65  ite3_config_none
d340: 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
d350: 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66  Enum op);....#if
d360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d370: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d380: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d390: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
d3a0: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
d3b0: 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
d3c0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d3d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d3e0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d3f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d400: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
d410: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
d420: 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
d430: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d440: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
d450: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
d460: 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53  te3_config_int(S
d470: 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e  QLiteConfigOpsEn
d480: 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65  um op, int value
d490: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
d4a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d4b0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d4c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d4d0: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
d4e0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20  qlite3_config", 
d4f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d500: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d510: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d520: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d530: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d540: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
d550: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d  qlite3_config")]
d560: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d570: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d580: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
d590: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  Code sqlite3_con
d5a0: 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f  fig_log(SQLiteCo
d5b0: 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  nfigOpsEnum op, 
d5c0: 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63  SQLiteLogCallbac
d5d0: 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
d5e0: 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
d5f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d600: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d610: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d620: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
d630: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
d640: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
d650: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
d660: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d670: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
d680: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d690: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d6a0: 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62  tr sqlite3_rollb
d6b0: 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  ack_hook(IntPtr 
d6c0: 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61  db, SQLiteRollba
d6d0: 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ckCallback func,
d6e0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
d6f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d700: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d710: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d720: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d730: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d740: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d750: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d760: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d770: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d780: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d790: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d7a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d7b0: 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e  te3_db_handle(In
d7c0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
d7d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d7e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d7f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d800: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d810: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d820: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d830: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d840: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d850: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d860: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d870: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d880: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
d890: 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
d8a0: 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
d8b0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
d8c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d8d0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d8e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d8f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d900: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d910: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d920: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d930: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d940: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d950: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d960: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
d970: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
d980: 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ec(IntPtr db, by
d990: 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74  te[] strSql, Int
d9a0: 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20  Ptr pvCallback, 
d9b0: 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20  IntPtr pvParam, 
d9c0: 6f 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73  out IntPtr errMs
d9d0: 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
d9e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d9f0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
da00: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
da10: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
da20: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
da30: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
da40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
da50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
da60: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
da70: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
da80: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
da90: 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
daa0: 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
dab0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
dac0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
dad0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dae0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
daf0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
db00: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
db10: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
db20: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
db30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
db40: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
db50: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
db60: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
db70: 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
db80: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
db90: 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
dba0: 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
dbb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
dbc0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
dbd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
dbe0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
dbf0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
dc00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
dc10: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
dc20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dc30: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
dc40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dc50: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
dc60: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
dc70: 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
dc80: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
dc90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
dca0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
dcb0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
dcc0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
dcd0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
dce0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
dcf0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
dd00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dd10: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
dd20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dd30: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
dd40: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
dd50: 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
dd60: 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
dd70: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
dd80: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd90: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
dda0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ddb0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ddc0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ddd0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
dde0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ddf0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
de00: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
de10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
de20: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
de30: 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
de40: 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
de50: 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
de60: 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
de70: 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
de80: 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
de90: 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
dea0: 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
deb0: 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
dec0: 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
ded0: 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
dee0: 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
def0: 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
df00: 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
df10: 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
df20: 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
df30: 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
df40: 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
df50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
df60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
df70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
df80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
df90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
dfa0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
dfb0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
dfc0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
dfd0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
dfe0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
dff0: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
e000: 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
e010: 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
e020: 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
e030: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e040: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e050: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e060: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e070: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e080: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e090: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e0a0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e0b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e0c0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e0d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e0e0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
e0f0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
e100: 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
e110: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
e120: 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
e130: 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
e140: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e150: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e160: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e170: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e180: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e190: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e1a0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e1b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e1c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e1d0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e1e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e1f0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
e200: 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
e210: 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
e220: 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
e230: 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
e240: 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
e250: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e260: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e270: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e280: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e290: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e2a0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e2b0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e2c0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e2d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e2e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e2f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e300: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
e310: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
e320: 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
e330: 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
e340: 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
e350: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e360: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e370: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e380: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e390: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e3a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e3b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e3c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e3d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e3e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e3f0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
e400: 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
e410: 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
e420: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
e430: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e440: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e450: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e460: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e470: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e480: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e490: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e4a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e4b0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e4c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e4d0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
e4e0: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
e4f0: 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
e500: 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
e510: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e520: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
e530: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e540: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
e550: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
e560: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
e570: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
e580: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e590: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
e5a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e5b0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
e5c0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
e5d0: 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65  e3_create_module
e5e0: 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49  _v2(IntPtr db, I
e5f0: 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50  ntPtr name, IntP
e600: 74 72 20 70 4d 6f 64 75 6c 65 2c 20 49 6e 74 50  tr pModule, IntP
e610: 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20  tr pClientData, 
e620: 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
e630: 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66  Destroy);....#if
e640: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e650: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e660: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e670: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e680: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e690: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e6a0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e6b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e6c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e6d0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e6e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
e6f0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
e700: 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
e710: 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  ab(IntPtr db, In
e720: 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23  tPtr zSQL);....#
e730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e750: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e760: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e770: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e780: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e790: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e7a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e7b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e7c0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e7d0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e7e0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
e7f0: 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f  printf(IntPtr fo
e800: 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29  rmat, __arglist)
e810: 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
e820: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
e830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e870: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
e880: 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
e890: 61 74 65 73 0d 0a 23 69 66 20 21 50 4c 41 54 46  ates..#if !PLATF
e8a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e8b0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
e8c0: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
e8d0: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
e8e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e8f0: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
e900: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
e910: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
e920: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
e930: 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
e940: 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
e950: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
e960: 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61 72 73  ,..        [Mars
e970: 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54  halAs(UnmanagedT
e980: 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53 69 7a  ype.LPArray, Siz
e990: 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20 32 29  eParamIndex = 2)
e9a0: 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ]..        IntPt
e9b0: 72 5b 5d 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  r[] argv,..     
e9c0: 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
e9d0: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
e9e0: 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
e9f0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
ea00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
ea50: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ea60: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ea70: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
ea80: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
ea90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
eaa0: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
eab0: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
eac0: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
ead0: 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
eae0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
eaf0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
eb00: 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
eb10: 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
eb20: 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
eb30: 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
eb40: 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61 6d 49  rray, SizeParamI
eb50: 6e 64 65 78 20 3d 20 32 29 5d 0d 0a 20 20 20 20  ndex = 2)]..    
eb60: 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67      IntPtr[] arg
eb70: 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
eb80: 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
eb90: 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
eba0: 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
ebb0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
ebc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec00: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
ec10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ec20: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
ec30: 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
ec40: 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
ec50: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ec60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
ec70: 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
ec80: 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
ec90: 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
eca0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
ecb0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
ecc0: 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Index..    );...
ecd0: 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
ed10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ed30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ed40: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
ed50: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
ed60: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
ed70: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
ed80: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
ed90: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
eda0: 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e  rrorCode xDiscon
edb0: 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
edc0: 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
edd0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
ee30: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ee40: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
ee50: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
ee60: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
ee70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ee80: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
ee90: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
eea0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
eeb0: 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
eec0: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
eed0: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
eee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
ef30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ef40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ef50: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
ef60: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
ef70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ef80: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
ef90: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
efa0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
efb0: 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
efc0: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
efd0: 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
efe0: 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
eff0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
f000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f040: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f050: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f060: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f070: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f080: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f090: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f0a0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f0b0: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f0c0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f0d0: 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
f0e0: 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
f0f0: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
f100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f150: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f160: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f170: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f180: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f190: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f1a0: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f1b0: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f1c0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
f1d0: 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  e xFilter(..    
f1e0: 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
f1f0: 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  or,..        int
f200: 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20   idxNum,..      
f210: 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c    IntPtr idxStr,
f220: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
f230: 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
f240: 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20 20  Ptr[] argv..    
f250: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
f260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
f2b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f2c0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
f2d0: 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
f2e0: 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
f2f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f300: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
f310: 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
f320: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e  LiteErrorCode xN
f330: 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ext(..        In
f340: 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
f350: 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
f360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
f3b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f3c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f3d0: 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
f3e0: 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
f3f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f400: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f410: 5b 72 65 74 75 72 6e 3a 20 4d 61 72 73 68 61 6c  [return: Marshal
f420: 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
f430: 2e 49 34 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  .I4)]..    publi
f440: 63 20 64 65 6c 65 67 61 74 65 20 62 6f 6f 6c 20  c delegate bool 
f450: 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49  xEof(..        I
f460: 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
f470: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
f4d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f4e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f4f0: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
f500: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
f510: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f520: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
f530: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
f540: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f550: 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
f560: 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
f570: 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r,..        IntP
f580: 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
f590: 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
f5a0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
f600: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f610: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f620: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
f630: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
f640: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f650: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
f660: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
f670: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
f680: 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
f690: 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
f6a0: 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  or,..        ref
f6b0: 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
f6c0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f710: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f720: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f730: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f740: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f750: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f760: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f770: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f780: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f790: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f7a0: 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
f7b0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
f7c0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 44 61 74          int nDat
f7d0: 61 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  a,..        IntP
f7e0: 74 72 20 61 70 44 61 74 61 2c 0d 0a 20 20 20 20  tr apData,..    
f7f0: 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
f800: 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
f810: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f860: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f870: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f880: 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
f890: 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
f8a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f8b0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
f8c0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
f8d0: 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
f8e0: 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
f8f0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
f900: 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
f910: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f960: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f970: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f980: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
f990: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
f9a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f9b0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
f9c0: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
f9d0: 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
f9e0: 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
f9f0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
fa00: 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
fa10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
fa60: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
fa70: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
fa80: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
fa90: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
faa0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
fab0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
fac0: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
fad0: 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
fae0: 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d  orCode xCommit(.
faf0: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
fb00: 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
fb10: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb60: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
fb70: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
fb80: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
fb90: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
fba0: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
fbb0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
fbc0: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
fbd0: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
fbe0: 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
fbf0: 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ck(..        Int
fc00: 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
fc10: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
fc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
fc70: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fc80: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
fc90: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
fca0: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
fcb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fcc0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 5b 72 65  .#endif..    [re
fcd0: 74 75 72 6e 3a 20 4d 61 72 73 68 61 6c 41 73 28  turn: MarshalAs(
fce0: 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 49 34  UnmanagedType.I4
fcf0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  )]..    public d
fd00: 65 6c 65 67 61 74 65 20 62 6f 6f 6c 20 78 46 69  elegate bool xFi
fd10: 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
fd20: 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
fd30: 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
fd40: 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49  nArg,..        I
fd50: 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20  ntPtr zName,..  
fd60: 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
fd70: 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63  Callback callbac
fd80: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  k,..        ref 
fd90: 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61  IntPtr pUserData
fda0: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
fe00: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
fe10: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fe20: 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
fe30: 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
fe40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
fe50: 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
fe60: 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
fe70: 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
fe80: 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20  ode xRename(..  
fe90: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
fea0: 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ab,..        Int
feb0: 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b  Ptr zNew..    );
fec0: 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff10: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
ff20: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ff30: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
ff40: 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
ff50: 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
ff60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ff70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
ff80: 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
ff90: 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76  teErrorCode xSav
ffa0: 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
ffb0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
ffc0: 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
ffd0: 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
ffe0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
fff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10010 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
10040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10050 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
10060 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
10070 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
10080 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10090 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
100a0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
100b0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
100c0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  se(..        Int
100d0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
100e0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
100f0 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
10100 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d  /////////////...
10150 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10160 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10170 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
10180 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
10190 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
101a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
101b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
101c0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
101d0 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54  rCode xRollbackT
101e0 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  o(..        IntP
101f0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
10200 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
10210 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
10220 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
10270 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10280 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10290 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
102a0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
102b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
102c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
102d0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
102e0 67 61 74 65 20 69 6e 74 20 78 46 75 6e 63 28 0d  gate int xFunc(.
102f0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
10300 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
10310 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
10320 20 20 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73        [MarshalAs
10330 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
10340 50 41 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61  PArray, SizePara
10350 6d 49 6e 64 65 78 20 3d 20 31 29 5d 0d 0a 20 20  mIndex = 1)]..  
10360 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61        IntPtr[] a
10370 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  rgv..    );.... 
10380 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
103d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
103e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
103f0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
10400 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
10410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
10430 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
10440 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
10450 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
10460 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
10470 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
10480 0a 0d 0a 20 20 20 20 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
104e0 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75  n Native Structu
104f0 72 65 73 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  res..    [Struct
10500 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
10510 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
10520 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
10530 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
10540 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
10550 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56     public int iV
10560 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
10570 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20   public xCreate 
10580 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20  xCreate;..      
10590 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63    public xConnec
105a0 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
105b0 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73       public xBes
105c0 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
105d0 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  x;..        publ
105e0 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  ic xDisconnect x
105f0 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  Disconnect;..   
10600 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73       public xDes
10610 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a  troy xDestroy;..
10620 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10630 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
10640 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f       public xClo
10650 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
10660 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74      public xFilt
10670 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
10680 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78       public xNex
10690 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20  t xNext;..      
106a0 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45    public xEof xE
106b0 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  of;..        pub
106c0 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  lic xColumn xCol
106d0 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
106e0 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77  blic xRowId xRow
106f0 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  Id;..        pub
10700 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64  lic xUpdate xUpd
10710 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
10720 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
10730 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  in;..        pub
10740 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
10750 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10760 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
10770 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10780 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  c xRollback xRol
10790 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  lback;..        
107a0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
107b0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
107c0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
107d0 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  lic xRename xRen
107e0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ame;..        /*
107f0 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f   The methods abo
10800 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f  ve are in versio
10810 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74  n 1 of the sqlit
10820 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
10830 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54      * object.  T
10840 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66  hose below are f
10850 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  or version 2 and
10860 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20   greater. */..  
10870 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61        public xSa
10880 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
10890 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
108a0 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65  lic xRelease xRe
108b0 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  lease;..        
108c0 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
108d0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
108e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
108f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10940 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
10950 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
10960 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
10970 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
10980 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
10990 0a 20 20 20 20 20 20 20 20 5b 4d 61 72 73 68 61  .        [Marsha
109a0 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70  lAs(UnmanagedTyp
109b0 65 2e 4c 50 53 74 72 75 63 74 29 5d 0d 0a 20 20  e.LPStruct)]..  
109c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
109d0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 70 4d 6f 64  ite3_module pMod
109e0 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ule;..        pu
109f0 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f  blic int nRef; /
10a00 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44  * NO LONGER USED
10a10 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
10a20 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d  lic IntPtr zErrM
10a30 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  sg;..    }....  
10a40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10a90 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
10aa0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
10ab0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
10ac0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
10ad0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
10ae0 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sor..    {..    
10af0 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
10b00 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 53  nmanagedType.LPS
10b10 74 72 75 63 74 29 5d 0d 0a 20 20 20 20 20 20 20  truct)]..       
10b20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
10b30 76 74 61 62 20 70 56 54 61 62 3b 0d 0a 20 20 20  vtab pVTab;..   
10b40 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
10b50 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
10ba0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
10bb0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
10bc0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
10bd0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
10be0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
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 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
10c20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
10c30 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
10c40 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d  aint constraint.
10c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
10c60 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
10c70 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
10c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
10c90 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e  (constraint != n
10ca0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10cb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10cc0 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63       iColumn = c
10cd0 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d  onstraint.iColum
10ce0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
10cf0 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61      op = constra
10d00 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20  int.op;..       
10d10 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20           usable 
10d20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61  = constraint.usa
10d30 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
10d40 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65        iTermOffse
10d50 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  t = constraint.i
10d60 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
10d70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10d80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10de0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
10df0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
10e00 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
10e10 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20  dexConstraintOp 
10e20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  op;..        pub
10e30 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
10e40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10e50 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
10e60 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
10e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10ec0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
10ed0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
10ee0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
10ef0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
10f00 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
10f10 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rby..    {..    
10f20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
10f30 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
10f40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
10f50 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
10f60 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
10f70 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
10f80 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
10f90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10fa0 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72         if (order
10fb0 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  By != null)..   
10fc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
10fe0 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43  umn = orderBy.iC
10ff0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
11000 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f          desc = o
11010 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20  rderBy.desc;..  
11020 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11030 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11040 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11090 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
110a0 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
110b0 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
110c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
110d0 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75  e desc;   /* Tru
110e0 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
110f0 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a  se for ASC. */..
11100 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11160 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
11170 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
11180 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
11190 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
111a0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
111b0 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b  int_usage..    {
111c0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
111d0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
111e0 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
111f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
11200 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
11210 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61  intUsage constra
11220 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
11230 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
11240 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
11250 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11260 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
11270 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c  aintUsage != nul
11280 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
11290 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
112a0 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63     argvIndex = c
112b0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61  onstraintUsage.a
112c0 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rgvIndex;..     
112d0 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20             omit 
112e0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
112f0 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20  e.omit;..       
11300 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11310 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11370 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
11380 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20  ndex; /* if >0, 
11390 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
113a0 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
113b0 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
113c0 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d    public byte om
113d0 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f  it;     /* Do no
113e0 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
113f0 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
11400 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  t */..    }.... 
11410 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11460 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
11470 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
11480 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
11490 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
114a0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
114b0 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nfo..    {..    
114c0 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f      /* Inputs */
114d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
114e0 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
114f0 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65  ; /* Number of e
11500 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74  ntries in aConst
11510 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20  raint */..      
11520 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
11530 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20  aConstraint;..  
11540 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
11550 20 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20   nOrderBy;..    
11560 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
11570 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20  r aOrderBy;..   
11580 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20       /* Outputs 
11590 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
115a0 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
115b0 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
115c0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
115d0 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20  idxNum;         
115e0 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64    /* Number used
115f0 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65   to identify the
11600 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
11610 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
11620 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20 20   idxStr;        
11630 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
11640 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
11650 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  m sqlite3_malloc
11660 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
11670 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72  lic int needToFr
11680 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65  eeIdxStr; /* Fre
11690 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20 73  e idxStr using s
116a0 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 66  qlite3_free() if
116b0 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20   true */..      
116c0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64    public int ord
116d0 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f  erByConsumed;  /
116e0 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
116f0 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
11700 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
11710 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73  public double es
11720 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20  timatedCost; /* 
11730 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f  Estimated cost o
11740 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64  f using this ind
11750 65 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 20 20  ex */..    }..  
11760 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
11770 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  }....#if PLATFOR
11780 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11790 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61  RK..  internal a
117a0 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72  bstract class Cr
117b0 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49  iticalHandle : I
117c0 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d  Disposable..  {.
117d0 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f  .    private boo
117e0 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20  l _isClosed;..  
117f0 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50    protected IntP
11800 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  tr handle;....  
11810 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74    protected Crit
11820 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74  icalHandle(IntPt
11830 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  r invalidHandleV
11840 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
11850 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76      handle = inv
11860 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b  alidHandleValue;
11870 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
11880 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
11890 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63  }....    ~Critic
118a0 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  alHandle()..    
118b0 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
118c0 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d  (false);..    }.
118d0 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76  ...    private v
118e0 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20  oid Cleanup().. 
118f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28     {..      if (
11900 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20  !IsClosed)..    
11910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69    {..        thi
11920 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72  s._isClosed = tr
11930 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ue;..        if 
11940 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20  (!IsInvalid)..  
11950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11960 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65     ReleaseHandle
11970 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47  ();..          G
11980 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
11990 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
119a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20     }..      }.. 
119b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
119c0 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d  ic void Close().
119d0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
119e0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
119f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
11a00 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
11a10 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
11a20 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
11a30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
11a40 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
11a50 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
11a60 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
11a70 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70  {..      Cleanup
11a80 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ();..    }....  
11a90 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74    protected abst
11aa0 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ract bool Releas
11ab0 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20  eHandle();....  
11ac0 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64    protected void
11ad0 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
11ae0 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  r value)..    {.
11af0 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
11b00 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  value;..    }...
11b10 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
11b20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
11b30 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  lid()..    {..  
11b40 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
11b50 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e  true;..      GC.
11b60 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
11b70 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (this);..    }..
11b80 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
11b90 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20  l IsClosed..    
11ba0 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72  {..      get { r
11bb0 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b  eturn _isClosed;
11bc0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
11bd0 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
11be0 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
11bf0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
11c00 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d  t;..    }....  }
11c10 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ....#endif....  
11c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11c70 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
11c80 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
11c90 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
11ca0 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e  / Handles the un
11cb0 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65  managed database
11cc0 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72   pointer, and pr
11cd0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
11ce0 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70  ion..    // supp
11cf0 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20  ort for it...   
11d00 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
11d10 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e   class SQLiteCon
11d20 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20  nectionHandle : 
11d30 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
11d40 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54      {..#if SQLIT
11d50 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50  E_STANDARD && !P
11d60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11d70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
11d80 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
11d90 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f  ate void CloseCo
11da0 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
11db0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
11dc0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
11dd0 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
11de0 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  r db);....      
11df0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11e00 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  c CloseConnectio
11e10 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43  nCallback closeC
11e20 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20  onnection =..   
11e30 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
11e40 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
11e50 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
11e60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11eb0 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
11ec0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11ed0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
11ee0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
11ef0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
11f00 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
11f10 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
11f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11f70 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f    private bool o
11f80 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  wnHandle;....   
11f90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11fe0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
11ff0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
12000 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
12010 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
12020 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20  andle db)..     
12030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12040 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c    if (db != null
12050 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12060 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
12070 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12090 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f   lock (db.syncRo
120a0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
120b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
120c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120d0 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61      return db.ha
120e0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
120f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12100 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12110 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
12120 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
12130 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12180 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12190 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
121a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
121b0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f  e(IntPtr db, boo
121c0 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
121d0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
121e0 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
121f0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
12200 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12210 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
12220 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
12230 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
12240 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12250 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
12260 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48  ownHandle = ownH
12270 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
12280 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
12290 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  e(db);..        
122a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
122b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
122c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12300 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
12310 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
12320 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f  nectionHandle(bo
12330 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
12340 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
12350 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
12360 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
12370 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
12380 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e           if (own
12390 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
123a0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
123b0 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
123c0 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
123d0 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
123e0 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
123f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
12400 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12450 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
12460 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
12470 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
12480 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
12490 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
124a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
124b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
124c0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
124d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
124e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
124f0 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29   if (!ownHandle)
12500 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
12510 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
12520 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12530 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
12540 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12550 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12570 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
12580 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
12590 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
125a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125b0 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
125c0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66  tr.Zero);....#if
125d0 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
125e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
125f0 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
12600 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
12610 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12620 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e         closeConn
12630 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
12640 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73  alHandle);..#els
12650 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
12660 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
12670 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
12680 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
12690 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
126a0 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
126b0 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
126c0 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndle);..#endif..
126d0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
126e0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
126f0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
12700 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12710 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12730 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
12740 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
12750 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12760 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
12770 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
12780 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
12790 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
127a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
127b0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
127f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12800 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
12810 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12820 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12830 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
12840 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
12850 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
12860 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12880 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
12890 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
128a0 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  this, handle);..
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128c0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
128d0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
128e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
128f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12900 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
12910 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
12920 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
12930 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
12940 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
12950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12960 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
12970 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
12980 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
12990 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
129a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
129b0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
129c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
129d0 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
129e0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
129f0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
12a00 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
12a10 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
12a20 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
12a30 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
12a40 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
12a50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
12a60 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
12a70 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
12a80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
12a90 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
12aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ac0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
12ad0 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
12ae0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
12af0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
12b00 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30  seConnection: {0
12b10 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
12b20 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
12b30 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
12b40 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20  dle, e));..     
12b50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
12b70 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
12b80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12b90 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
12ba0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
12bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
12bc0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
12bd0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
12be0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12bf0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
12c00 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
12c10 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
12c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c40 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
12c50 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
12c60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12c70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
12c80 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
12c90 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
12ca0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
12cb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
12cc0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
12cd0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12ce0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
12d30 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
12d40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
12d50 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
12d60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
12d70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12d80 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
12d90 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
12da0 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
12db0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
12dc0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
12dd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
12de0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
12df0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12e40 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
12e50 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
12e60 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
12e70 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
12e80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
12e90 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
12ea0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
12ec0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
12ed0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
12ee0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12f00 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
12f10 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
12f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
12f40 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
12f50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12fa0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
12fb0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
12fc0 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
12fd0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
12fe0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
12ff0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13000 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
13010 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
13020 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
13030 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13040 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
13050 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
13060 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13070 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
13080 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
13090 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
130a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
130f0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
13100 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
13110 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
13120 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
13130 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
13140 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
13150 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
13160 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
13170 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
13180 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
13190 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
131a0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
131b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
131c0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
131d0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
131e0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
131f0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
13200 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
13210 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13260 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
13270 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
13280 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
13290 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a  ////////////....
132e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
132f0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
13300 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
13310 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
13320 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
13330 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13340 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
13350 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13360 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
13370 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13380 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
13390 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
133a0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
133b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
133c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
133d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
133e0 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
133f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13400 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13410 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13420 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
13430 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
13440 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13490 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
134a0 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
134b0 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
134c0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
134d0 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
134e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
134f0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
13500 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
13510 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
13530 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
13540 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
13550 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13560 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
13570 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
13580 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
13590 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
135a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
135b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
135c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13600 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13610 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
13620 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
13630 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
13640 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
13650 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
13660 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
13670 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
13680 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
13690 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
136a0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
136b0 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
136c0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
136d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
136e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13730 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
13740 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
13750 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
13760 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
13770 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
13780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
13790 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
137a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
137b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
137c0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
137d0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
137e0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
137f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13800 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
13810 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13830 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
13840 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
13850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13860 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
13870 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
13880 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
13890 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
138a0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
138b0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
138c0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
138d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
138f0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
13900 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
13910 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13930 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
13940 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  t: {0}", localHa
13950 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  ndle));..       
13960 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13970 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
13980 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
13990 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
139a0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
139b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
139c0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
139d0 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
139e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a00 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
13a10 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13a40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
13a50 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
13a60 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e  atement(cnn, han
13a70 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
13a90 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
13aa0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13ad0 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
13ae0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
13af0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
13b00 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
13b10 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
13b20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
13b30 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
13b40 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
13b50 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
13b60 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
13b70 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
13b80 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
13b90 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
13ba0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
13bb0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
13bc0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
13bd0 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
13be0 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
13bf0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
13c00 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
13c10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
13c20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
13c30 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
13c40 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
13c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
13c60 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
13c70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13c80 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
13c90 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
13ca0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cc0 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65    "FinalizeState
13cd0 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ment: {0}, excep
13ce0 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
13cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d00 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
13d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13d20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13d30 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d60 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
13d70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13d80 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
13d90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
13da0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
13db0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
13dd0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
13de0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
13df0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13e00 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
13e10 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
13e20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
13e30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13e40 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
13e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
13e60 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
13e70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
13e80 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
13e90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
13ea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ef0 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
13f00 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
13f10 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
13f20 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
13f30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13f40 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
13f50 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
13f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f70 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
13f80 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
13f90 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  ntCount);..     
13fa0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
13fb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14000 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
14010 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
14020 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
14030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14040 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
14050 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
14060 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14070 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
14080 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
14090 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
140a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
140b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
140c0 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
140d0 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
140e0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
140f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14100 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14110 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
14120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14160 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
14170 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
14180 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
14190 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
141a0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
141b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
141c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
141d0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
141e0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
141f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14200 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14210 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
14220 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
14230 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
14240 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
14250 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
14260 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
14270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142b0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
142c0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
142d0 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
142e0 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
142f0 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
14300 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
14310 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
14320 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
14330 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
14340 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
14350 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
14360 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
14370 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14380 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
14390 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
143a0 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
143b0 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
143c0 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
143d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14420 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
14430 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
14440 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
14450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14470 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
144b0 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
144c0 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
144d0 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70  Ptr(SQLiteBackup
144e0 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a  Handle backup)..
144f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14500 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75         if (backu
14510 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  p != null)..    
14520 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
14530 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14540 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
14550 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
14560 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29  backup.syncRoot)
14570 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
14580 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145a0 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68   return backup.h
145b0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
145c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
145d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
145e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
145f0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
14600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f  ////////////////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14660 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
14670 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
14680 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
14690 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
146a0 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
146b0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
146c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
146d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
146e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
146f0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
14700 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
14710 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
14730 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
14740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14750 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70  SetHandle(backup
14760 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14770 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
14780 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
147d0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
147e0 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  te SQLiteBackupH
147f0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
14800 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
14810 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
14820 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
14830 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
14840 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
14850 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ncrement(..     
14860 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
14870 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
14880 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
14890 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
148a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
148b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14900 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
14910 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
14920 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
14930 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14940 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
14950 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
14960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14970 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
14980 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
14990 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
149a0 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
149b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
149c0 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
149d0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
149e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
149f0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
14a00 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
14a10 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
14a20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
14a30 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
14a40 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
14a50 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
14a60 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
14a70 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
14a80 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
14a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14aa0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14ab0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
14ac0 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
14ad0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
14ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
14af0 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
14b00 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
14b10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14b20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14b30 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14b60 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
14b70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
14b80 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
14b90 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
14ba0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14bb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
14bc0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
14bd0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
14be0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c00 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
14c10 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
14c20 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
14c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c40 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
14c50 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
14c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14c80 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
14c90 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
14ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14cb0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
14cc0 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
14cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14ce0 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
14cf0 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e  thods.backupCoun
14d00 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
14d10 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
14d20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
14d30 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
14d40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
14d50 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
14d60 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
14d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
14d80 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
14d90 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
14da0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
14db0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
14dc0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
14dd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
14de0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
14df0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
14e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14e10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
14e20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14e30 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
14e40 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
14e50 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
14e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e70 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
14e80 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  up: {0}, excepti
14e90 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
14ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14eb0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d     handle, e));.
14ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14ed0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14ee0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
14ef0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14f10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
14f20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14f30 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
14f40 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
14f50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14f60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
14f70 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
14f80 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
14f90 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
14fa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14fb0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
14fc0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
14fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14fe0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14ff0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
15000 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15010 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
15020 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
15030 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
15040 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
15050 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
150a0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
150b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
150c0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
150d0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
150e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
150f0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
15100 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
15110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15120 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
15130 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
15140 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
15150 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
15160 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
151b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
151c0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
151d0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
151e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
151f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15200 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
15210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15230 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
15240 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
15250 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15270 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
15280 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
15290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
152a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
152b0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
152c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15310 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
15320 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
15330 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
15340 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
15350 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
15360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15370 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
15380 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
15390 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
153a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
153b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
153c0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
153d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
153e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
153f0 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
15400 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..