System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9798fc120c7218778958a1b23ac7181e1d2c42d1:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c  (TRACE_PRELOAD |
01a0: 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29 0d  | TRACE_HANDLE).
01b0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01c0: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01d0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01e0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01f0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
0200: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
0210: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
0220: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0240: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0250: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0260: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0270: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0280: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0290: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
02a0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02b0: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02c0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02e0: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
02f0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0300: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0310: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
0340: 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53 75  && !DEBUG..  [Su
0350: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
0360: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65  odeSecurity]..#e
0370: 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ndif..  internal
0380: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
0390: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
03a0: 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72  s..  {..      #r
03b0: 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20 48  egion Critical H
03c0: 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44 65  andle Counts (De
03d0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d  bug Build Only).
03e0: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
03f0: 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  E..      //..   
0400: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73     // NOTE: Thes
0410: 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73 65  e counts represe
0420: 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  nt the total num
0430: 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
0440: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ng..      //    
0450: 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64     (non-disposed
0460: 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
0470: 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74 20   derived object 
0480: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
0490: 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74 65   //       create
04a0: 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61 72  d by this librar
04b0: 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61 72  y and are primar
04c0: 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d 0a  ily for use by..
04d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
04e0: 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20 20  he test suite.  
04f0: 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72 65  These counts are
0500: 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79 20   incremented by 
0510: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
0520: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
0530: 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64 20  onstructors and 
0540: 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20  are decremented 
0550: 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  upon the..      
0560: 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73 73  //       success
0570: 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f  ful completion o
0580: 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  f the associated
0590: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a   ReleaseHandle..
05a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d        //       m
05b0: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f  ethods...      /
05c0: 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  /..      interna
05d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6e  l static int con
05e0: 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20  nectionCount;.. 
05f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
0600: 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d 65  atic int stateme
0610: 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  ntCount;..      
0620: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0630: 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b  int backupCount;
0640: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
0650: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0660: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
06b0: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
06c0: 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
06d0: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
06e0: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
06f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0700: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
0710: 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
0720: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
0730: 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
0740: 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
0750: 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
0760: 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
0770: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
0780: 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
0790: 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
07a0: 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
07b0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
07c0: 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
07d0: 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
07e0: 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
07f0: 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
0800: 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
0810: 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
0820: 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
0830: 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
0840: 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
0850: 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
0860: 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
0870: 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
0880: 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
0890: 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
08a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
08b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
08c0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
08d0: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
08e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
08f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
0900: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
0910: 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
0920: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
0930: 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
0940: 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
0950: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
0960: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
0970: 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
0980: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
0990: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
09a0: 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ARY..#if !PLATFO
09b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
09c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ORK..      /// <
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
09e0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
09f0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
0a00: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
0a10: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
0a20: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
0a30: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
0a40: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
0a50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0a60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0a70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0a80: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
0a90: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
0aa0: 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
0ab0: 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
0ac0: 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65 6e  HITECTURE";..#en
0ad0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0b30: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0b40: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44  eadonly string D
0b50: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
0b60: 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20  = ".dll";....   
0b70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0bc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0bd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0be0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
0bf0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
0c00: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
0c10: 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79  in32 LoadLibrary
0c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
0c30: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
0c40: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
0c50: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
0c60: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
0c70: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
0c80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0ca0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
0cb0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
0cc0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
0cd0: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
0ce0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
0cf0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
0d00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
0d10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
0d20: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
0d30: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
0d40: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
0d50: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
0d60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
0d70: 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ns>..#if !PLATFO
0d80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0d90: 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ORK..      [DllI
0da0: 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22  mport("kernel32"
0db0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
0dc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
0dd0: 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  dll",..#endif.. 
0de0: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
0df0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
0e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
0e10: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
0e20: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
0e30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0e40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0e50: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
0e60: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
0e70: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
0e80: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
0e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
0ea0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
0eb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
0ec0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
0ed0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
0ee0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
0ef0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
0f00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f50: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
0f60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0f90: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
0fa0: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
0fb0: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
0fc0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
0fd0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
0fe0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
0ff0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
1000: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
1010: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
1020: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
1030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1050: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1060: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
1070: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
1080: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
1090: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
10a0: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
10b0: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
10c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10d0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
10e0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
10f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1110: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
1120: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1130: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
1140: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
1150: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
1160: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
1170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
11c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
11e0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
11f0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
1200: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
1210: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
1220: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
1230: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
1240: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
1250: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
1260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1270: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1280: 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f  te enum Processo
1290: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20  rArchitecture : 
12a0: 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54  ushort /* COMPAT
12b0: 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20  : Win32. */..   
12c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12d0: 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20  Intel = 0,..    
12e0: 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d        MIPS = 1,.
12f0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
1300: 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 2,..         
1310: 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20   PowerPC = 3,.. 
1320: 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34           SHx = 4
1330: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d  ,..          ARM
1340: 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 5,..         
1350: 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20   IA64 = 6,..    
1360: 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20        Alpha64 = 
1370: 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53  7,..          MS
1380: 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20  IL = 8,..       
1390: 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20     AMD64 = 9,.. 
13a0: 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e           IA32_on
13b0: 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20  _Win64 = 10,..  
13c0: 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20          Unknown 
13d0: 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20  = 0xFFFF..      
13e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1430: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1440: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1450: 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74   /// This struct
1460: 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ure contains inf
1470: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
1480: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75  he current compu
1490: 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20  ter. This..     
14a0: 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68   /// includes th
14b0: 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65  e processor type
14c0: 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d  , page size, mem
14d0: 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65  ory addresses, e
14e0: 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tc...      /// <
14f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1500: 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1510: 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1520: 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72  tial)]..      pr
1530: 69 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53  ivate struct SYS
1540: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
1550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
1560: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
1570: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
1580: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1590: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
15a0: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
15b0: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
15c0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
15d0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
15e0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
15f0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1600: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1610: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
1620: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
1630: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
1640: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1650: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
1660: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
1670: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1690: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
16a0: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
16b0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
16c0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16d0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
16e0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
16f0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
1700: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
1710: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
1720: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1730: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1740: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
1750: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
1760: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
1770: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
1780: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
1790: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
17a0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
17b0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
17c0: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
17d0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
17e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
17f0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
1800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1850: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1860: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
1870: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
1880: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
1890: 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 61   _SQLiteModule a
18a0: 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nd..      /// pr
18b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18c0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
18d0: 6c 64 73 2c 20 62 65 6c 6f 77 2e 0d 0a 20 20 20  lds, below...   
18e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1900: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1910: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
1920: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1930: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1990: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19a0: 20 20 20 20 20 20 2f 2f 2f 20 53 74 6f 72 65 73        /// Stores
19b0: 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65   the mappings be
19c0: 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20  tween processor 
19d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
19e0: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 0d  es and platform.
19f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73  .      /// names
1a00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1a10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1a20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69  rivate static Di
1a30: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1a40: 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73   string> process
1a50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1a60: 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20  atforms;....    
1a70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1ac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1ae0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
1af0: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
1b00: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
1b10: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
1b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
1b30: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
1b40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b50: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1b60: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
1b70: 74 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74  teModule = IntPt
1b80: 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1b90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1bf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e  .      /// For n
1c00: 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ow, this method 
1c10: 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65  simply calls the
1c20: 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68   Initialize meth
1c30: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
1c40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c50: 20 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61   static UnsafeNa
1c60: 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20  tiveMethods().. 
1c70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c80: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d    Initialize();.
1c90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1ca0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1cf0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
1d10: 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69  mpts to initiali
1d20: 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79  ze this class by
1d30: 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65   pre-loading the
1d40: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
1d50: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
1d60: 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  y for the proces
1d70: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1d80: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1d90: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
1da0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1db0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1dc0: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
1dd0: 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b  alize()..      {
1de0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1e10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1e20: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72  E: If the "No_Pr
1e30: 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76  eLoadSQLite" env
1e40: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
1e50: 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20  e is set (to..  
1e60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1e70: 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70   anything), skip
1e80: 20 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c   all our special
1e90: 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79   code and simply
1ea0: 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20   return...      
1eb0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1ec0: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
1ed0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
1ee0: 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 50 72 65  Variable("No_Pre
1ef0: 4c 6f 61 64 53 51 4c 69 74 65 22 29 20 21 3d 20  LoadSQLite") != 
1f00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1f10: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
1f20: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1f30: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1f40: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1f70: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
1f80: 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69  ake sure this li
1f90: 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66  st is updated if
1fa0: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a   the supported..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1fd0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1fe0: 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66  mes and/or platf
1ff0: 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  orm names..     
2000: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2010: 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20    changes...    
2020: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2030: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2040: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2050: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
2060: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2070: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
20b0: 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f  e the map of pro
20c0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
20d0: 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  ure names..     
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
20f0: 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72        to platfor
2100: 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20  m names using a 
2110: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
2120: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
2130: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2140: 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20      comparer... 
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2170: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2180: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2190: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
21b0: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
21c0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a  ring, string>(..
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
21f0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
2200: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a  IgnoreCase);....
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2230: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2240: 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20   Setup the list 
2250: 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  of platform name
2260: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2270: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2280: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2290: 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63  e supported proc
22a0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
22b0: 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  res...          
22c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
22e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
22f0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
2300: 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29  ("x86", "Win32")
2310: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2320: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
2330: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
2340: 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c  rms.Add("AMD64",
2350: 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20   "x64");..      
2360: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
2370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2380: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
2390: 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22  IA64", "Itanium"
23a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23b0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
23c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
23d0: 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20  orms.Add("ARM", 
23e0: 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20  "WinCE");..     
23f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2420: 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62   BUGBUG: What ab
2430: 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63  out other applic
2440: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a  ation domains?..
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2470: 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  if (_SQLiteModul
2480: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2490: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24a0: 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64 75       _SQLiteModu
24b0: 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c 69  le = PreLoadSQLi
24c0: 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c 6c  teDll(null, null
24d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
24e0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
24f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2540: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
2560: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2570: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
2580: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
2590: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
25a0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
25b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
25c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
25d0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25e0: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
25f0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
2600: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
2610: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
2620: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
2630: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2640: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
2650: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2660: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2670: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2680: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
2690: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  y()..      {..#i
26a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
26e0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
26f0: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
2700: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
2710: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
2720: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
2730: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
2740: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
2750: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
2760: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2770: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
2780: 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e  ectory = Environ
2790: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
27a0: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
27c0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
27d0: 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20  irectory");.... 
27e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
27f0: 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
2800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2810: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
2820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
2840: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
2850: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
2860: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
2870: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
2880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2890: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
28a0: 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
28b0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
28c0: 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  he directory..  
28d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
28f0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
2900: 69 6e 67 20 61 73 73 65 6d 62 6c 79 20 28 69 2e  ing assembly (i.
2910: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
2920: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
2930: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
2940: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
2950: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62 61 73  ation domain bas
2960: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
2970: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e        directory.
2980: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
29a0: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
29b0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
29c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29d0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
29e0: 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
29f0: 65 63 74 6f 72 79 22 29 20 21 3d 20 6e 75 6c 6c  ectory") != null
2a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a40: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
2a50: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2a60: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
2a70: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a90: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
2aa0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2ab0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad0: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
2ae0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
2af0: 61 6d 65 28 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  ame(assembly.Loc
2b00: 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ation);....     
2b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b20: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
2b30: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
2b40: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b60: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
2b70: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
2b80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ba0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
2be0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2c00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
2c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
2c20: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
2c30: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
2c40: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
2c50: 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
2c60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
2c70: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
2c80: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
2c90: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ca0: 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
2cb0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
2cc0: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
2cd0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ce0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
2cf0: 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
2d00: 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
2d10: 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
2d20: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
2d30: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
2d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d50: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2d60: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
2d70: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
2d80: 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
2d90: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2da0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61    if (assemblyNa
2db0: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
2dc0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2dd0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2de0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e00: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
2e10: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
2e20: 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  e(assemblyName.C
2e30: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
2e40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e50: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2e60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e70: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
2e80: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  g...          }.
2e90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
2ea0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69  urn null;..#endi
2eb0: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
2ec0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2f10: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f20: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
2f30: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
2f40: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
2f50: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
2f60: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
2f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
2f80: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
2f90: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
2fa0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2fb0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2fc0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
2fd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
2fe0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
2ff0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
3000: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
3010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3020: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3030: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3040: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
3050: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
3060: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
3070: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
3080: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
3090: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
30a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
30b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
30c0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
30d0: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
30e0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
30f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
3100: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
3110: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3120: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
3130: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
3140: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3160: 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61    PlatformID pla
3170: 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f  tformId = Enviro
3180: 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e  nment.OSVersion.
3190: 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20  Platform;....   
31a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31b0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
31c0: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29  atformID.Win32S)
31d0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
31e0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
31f0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
3200: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
3210: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
3220: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
3230: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
3240: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3260: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
3270: 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d  tformID.WinCE)).
3280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a0: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
32b0: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
32c0: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
32f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
3300: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3330: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3340: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
3350: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3380: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
33a0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
33b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3420: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
3430: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3440: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
3450: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
3460: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
3470: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
3480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3490: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
34a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
34b0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
34c0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
34d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
34e0: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
34f0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
3500: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
3510: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
3520: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3530: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3540: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
3550: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3560: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
3570: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3580: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3590: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
35b0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
35c0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
35d0: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
35e0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
35f0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
3600: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
3610: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
3620: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3630: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
3640: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
3650: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
3660: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3670: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
3680: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
3690: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
36a0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
36b0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
36c0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
36d0: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
36e0: 74 65 63 74 75 72 65 22 29 3b 0d 0a 0d 0a 20 20  tecture");....  
36f0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3700: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3710: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
3720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3730: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
3740: 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
3750: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3760: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
3770: 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
3780: 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
3790: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
37a0: 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
37b0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
37c0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50  onmentVariable(P
37d0: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
37e0: 43 54 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a  CTURE);..#else..
37f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3800: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3810: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
3820: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
3830: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
3840: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
3850: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
3860: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
3870: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
3880: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
3890: 20 75 73 20 77 69 74 68 0d 0a 20 20 20 20 20 20   us with..      
38a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
38b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
38c0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
38d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
38e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
38f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3900: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3910: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
3920: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
3930: 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
3940: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 6c  ction will be pl
3950: 61 63 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  aced..          
3960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72      //       her
3970: 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f  e.  Only the pro
3980: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3990: 75 72 65 20 66 69 65 6c 64 20 69 73 20 75 73 65  ure field is use
39a0: 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 20 20  d by..          
39b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
39c0: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
39d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
39e0: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45             SYSTE
39f0: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
3a00: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
3a10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3a20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
3a30: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
3a40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
3a50: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 20 66  P/Invoke, thus f
3a60: 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  illing..        
3a70: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
3a80: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
3ab0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
3ac0: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
3ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3af0: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
3b00: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
3b10: 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
3b20: 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b50: 72 65 74 75 72 6e 20 73 79 73 74 65 6d 49 6e 66  return systemInf
3b60: 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
3b70: 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
3b80: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
3b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
3ba0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3bc0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
3bd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3be0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3bf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
3c00: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74  pon failure, ret
3c10: 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72  urn an empty str
3c20: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3c30: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
3c40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
3c50: 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  y;..#endif..    
3c60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3cc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3cd0: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
3ce0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3cf0: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
3d00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
3d10: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
3d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3d40: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
3d50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
3d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
3d70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3d80: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
3d90: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
3da0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
3db0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3de0: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
3df0: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
3e00: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
3e10: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
3e20: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
3e30: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
3e40: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
3e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3e60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3e70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
3e80: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
3e90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
3ea0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
3eb0: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  tecture..       
3ec0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
3ed0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
3ee0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
3ef0: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
3f00: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
3f10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3f20: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
3f30: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3f40: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3f60: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3f70: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
3f80: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
3f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fa0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3fc0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
3fd0: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
3fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
4000: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
4010: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4030: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4040: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
4050: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
4060: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4080: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
4090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
40a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
40b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
40c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
40d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4130: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4140: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
4150: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
4160: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
4170: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
4180: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
4190: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
41a0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
41b0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
41c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
41d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
41e0: 20 6e 61 6d 65 3d 22 64 69 72 65 63 74 6f 72 79   name="directory
41f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
4200: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4210: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
4220: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
4230: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
4240: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
4250: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
4260: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
4270: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
4280: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
4290: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
42a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
42b0: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
42c0: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
42d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
42e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
42f0: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
4300: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
4310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
4320: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
4330: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
4340: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
4350: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
4360: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
4370: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
4380: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
4390: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
43a0: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
43b0: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
43c0: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
43d0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
43e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
43f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
4400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
4420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
4430: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
4440: 4c 69 62 72 61 72 79 20 2d 4f 52 2d 20 49 6e 74  Library -OR- Int
4450: 50 74 72 2e 5a 65 72 6f 0d 0a 20 20 20 20 20 20  Ptr.Zero..      
4460: 2f 2f 2f 20 69 66 20 74 68 65 20 6c 6f 61 64 69  /// if the loadi
4470: 6e 67 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79  ng fails for any
4480: 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20   reason...      
4490: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
44a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
44b0: 61 74 69 63 20 49 6e 74 50 74 72 20 50 72 65 4c  atic IntPtr PreL
44c0: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
44d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
44e0: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
44f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
4500: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4510: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
4520: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4530: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4540: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
4550: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
4560: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
4570: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
4580: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ult...          
4590: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
45a0: 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e   (directory == n
45b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
45c0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
45d0: 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
45e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
45f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
4600: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
4610: 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
4620: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4630: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
4640: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4650: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
4660: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
4670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4680: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
4690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
46a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
46b0: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
46c0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
46d0: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
46e0: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
46f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4700: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
4710: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
4720: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
4730: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
4740: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
4750: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
4760: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
4770: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c        SQLITE_DLL
4780: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
4790: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
47a0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
47b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
47c0: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
47d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
47e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
47f0: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
4800: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
4810: 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
4820: 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
4830: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4840: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
4850: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4860: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
4870: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
4880: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
4890: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
48a0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
48b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
48c0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
48d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
48e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
48f0: 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
4900: 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
4910: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
4920: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
4930: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4940: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
4950: 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
4960: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4970: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
4980: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
4990: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
49a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
49b0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
49c0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
49d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
49e0: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
49f0: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
4a00: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
4a10: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
4a20: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
4a30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
4a40: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
4a50: 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e  llFileName(Path.
4a60: 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d  Combine(Path.Com
4a70: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d  bine(directory,.
4a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
4a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4aa0: 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  ture), SQLITE_DL
4ab0: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
4ac0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4ad0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
4ae0: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
4af0: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
4b00: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
4b10: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
4b20: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
4b30: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
4b40: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
4b50: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
4b60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4b70: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
4b80: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
4b90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4ba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4bb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4bc0: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
4bd0: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
4be0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4bf0: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
4c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4c10: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4c40: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
4c50: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
4c60: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
4c70: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4c90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4ca0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
4cb0: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
4cc0: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
4cd0: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
4ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4cf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4d00: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
4d10: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4d30: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
4d40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
4d50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4d60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
4d70: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
4d80: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
4d90: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
4da0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
4db0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
4dc0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
4dd0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
4de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4df0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4e00: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
4e10: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
4e20: 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43  h.Combine(Path.C
4e30: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
4e40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4e50: 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 4e 61 6d       platformNam
4e60: 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29  e), SQLITE_DLL))
4e70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4e80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4e90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
4ea0: 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
4eb0: 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
4ec0: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
4ed0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4ee0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
4ef0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
4f00: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
4f30: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
4f40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4f50: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
4f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4f80: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
4f90: 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
4fa0: 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
4fb0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4fd0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
4fe0: 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
4ff0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 23             //..#
5000: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5010: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
5020: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
5030: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
5040: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
5050: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5060: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
5070: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c      "Trying to l
50a0: 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74  oad native SQLit
50b0: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
50c0: 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  "...",..        
50d0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
50e0: 6d 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  me));..#endif...
50f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5100: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5110: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
5120: 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
5130: 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
5140: 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
5150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5160: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
5170: 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
5180: 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
5190: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
51a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51b0: 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
51c0: 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d  w an exception..
51d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
51e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
51f0: 20 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72   return LoadLibr
5200: 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
5210: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
5220: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
5230: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
5240: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
5250: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
5260: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
5270: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
5280: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
5290: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
52a0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
52b0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
52c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
52d0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
52e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
52f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5310: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
5320: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
5330: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5360: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
5370: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
5380: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
5390: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
53a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68  // NOTE: Show wh
53d0: 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f  ere we failed to
53e0: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
53f0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
5400: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5410: 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d      library from
5420: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
5430: 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65  Win32 error code
5440: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
5450: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5460: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72   exception infor
5470: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
5480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
54b0: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
54c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
54d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
54e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
54f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
5500: 20 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65            "Faile
5510: 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
5520: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
5530: 5c 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20  \"{0}\" " +..   
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f     "(getLastErro
5560: 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
5570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5580: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
5590: 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
55a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
55b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
55d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
55e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
55f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
5600: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
5610: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
5620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5630: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5640: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
5650: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
5660: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
5670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
56d0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
56e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
56f0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
5700: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
5710: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
5720: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
5730: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
5740: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
5750: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
5760: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
5770: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
5780: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
5790: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
57a0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
57b0: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
57c0: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
57d0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
57e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
57f0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
5800: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
5810: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
5820: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
5830: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
5840: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
5850: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
5860: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
5870: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
5880: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
5890: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
58a0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
58b0: 65 72 6f 70 2e 30 38 37 2e 64 6c 6c 22 3b 0d 0a  erop.087.dll";..
58c0: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
58d0: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
58e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
58f0: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
5900: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
5910: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
5920: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
5930: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
5940: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
5950: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
5960: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
5970: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
5980: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
5990: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
59a0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
59b0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
59c0: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
59d0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
59e0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
59f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
5a00: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
5a10: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
5a20: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
5a30: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
5a40: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
5a50: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
5a60: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
5a70: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
5a80: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
5a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
5aa0: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
5ab0: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
5ac0: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
5ad0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
5ae0: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
5af0: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
5b00: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
5b10: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
5b20: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
5b30: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
5b40: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
5b50: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
5b60: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
5b70: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
5b80: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
5b90: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
5ba0: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
5bb0: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
5bc0: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
5bd0: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
5be0: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
5bf0: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
5c00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
5c10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5c20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5c40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5c50: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
5c60: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
5c70: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5c80: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5c90: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5ca0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5cb0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5cc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5cd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5ce0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
5cf0: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
5d00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5d10: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5d20: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5d30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5d40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5d50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5d60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5d70: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
5d80: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
5d90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
5da0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
5db0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
5dc0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5dd0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
5de0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5df0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5e00: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
5e10: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
5e20: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
5e30: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
5e40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5e80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
5e90: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
5ea0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
5eb0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
5ec0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
5ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5ee0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5ef0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5f00: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5f10: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
5f20: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5f30: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5f40: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5f60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5f70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5f80: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5f90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
5fa0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
5fb0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5fc0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5fd0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5fe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5ff0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6000: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6010: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6020: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
6030: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
6040: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
6050: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
6060: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6070: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6080: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6090: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
60a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
60b0: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
60c0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
60d0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
60e0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
60f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6100: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6110: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6120: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6130: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
6140: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
6150: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6160: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6170: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
6190: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
61a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
61b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
61c0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
61d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
61e0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
61f0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
6200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6210: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6230: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6240: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6250: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
6260: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6270: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6280: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6290: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
62a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
62b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
62c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
62d0: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
62e0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
62f0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
6300: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
6310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6320: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6330: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6340: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6350: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
6360: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74  p(IntPtr db, out
6370: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
6380: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6390: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
63a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
63b0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
63c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
63d0: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
63e0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
63f0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
6400: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
6410: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
6420: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
6430: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
6440: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6450: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6460: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6470: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6480: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
6490: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
64a0: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
64b0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
64c0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
64d0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
64e0: 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Name, out IntPtr
64f0: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75   ptrDataType, ou
6500: 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  t IntPtr ptrColl
6510: 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74  Seq, out int not
6520: 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72  Null, out int pr
6530: 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e  imaryKey, out in
6540: 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69  t autoInc, out i
6550: 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e  nt dtLen, out in
6560: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
6570: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6580: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6590: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
65a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
65b0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
65c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
65d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
65e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
65f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6620: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
6630: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
6640: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
6650: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
6660: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6670: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6680: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6690: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c   int sqlite3_mal
66a0: 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70  loc_size_interop
66b0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
66c0: 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a  if INTEROP_LOG..
66d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
66e0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
66f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6700: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
6710: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6720: 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72  config_log_inter
6730: 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  op();..#endif..#
6740: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
6750: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
6760: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6770: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
6780: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
6790: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
67a0: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
67b0: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
67c0: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
67d0: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
67e0: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
67f0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
6800: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
6810: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
6820: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
6830: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
6840: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
6850: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6860: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6870: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6880: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
6890: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
68a0: 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
68b0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
68c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
68d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
68e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
68f0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6900: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
6910: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
6920: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
6930: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
6940: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
6950: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
6960: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
6970: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
6980: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
6990: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
69a0: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
69b0: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
69c0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
69d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
69e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
69f0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
6a00: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6a10: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
6a20: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
6a30: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
6a40: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6a50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6a60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
6a70: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
6a80: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
6a90: 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
6aa0: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
6ab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6ac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6ad0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6ae0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6af0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
6b00: 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
6b10: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
6b20: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
6b30: 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49  num flags, out I
6b40: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
6b50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6b60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6b70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6b80: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6b90: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
6ba0: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
6bb0: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
6bc0: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
6bd0: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74  sEnum flags, out
6be0: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
6bf0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6c00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
6c10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6c20: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
6c30: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6c40: 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
6c50: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
6c60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6c70: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6c80: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6c90: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
6ca0: 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
6cb0: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
6cc0: 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
6cd0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
6ce0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6cf0: 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
6d00: 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
6d10: 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
6d20: 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
6d30: 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
6d40: 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
6d50: 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
6d60: 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
6d70: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
6d80: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6d90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6da0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6db0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6dc0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6dd0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6de0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6df0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6e00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6e10: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6e20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6e30: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6e40: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
6e50: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
6e60: 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
6e70: 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
6e80: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6e90: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6ea0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6eb0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6ec0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6ed0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6ee0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6ef0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6f00: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6f10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6f20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
6f30: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
6f40: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
6f50: 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
6f60: 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
6f70: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6f80: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6f90: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6fa0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6fb0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6fc0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6fd0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6fe0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6ff0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7000: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7010: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7020: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
7030: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
7040: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
7050: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
7060: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
7070: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
7080: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
7090: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
70a0: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
70b0: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
70c0: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
70d0: 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
70e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
70f0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7100: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7110: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7120: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7130: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7140: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7150: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7160: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7170: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7180: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
7190: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
71a0: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
71b0: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
71c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
71d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
71e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
71f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7200: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7210: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7220: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7240: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7250: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7260: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
7270: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
7280: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
7290: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
72a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
72b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
72c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
72d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
72e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
72f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7300: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7310: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7320: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7330: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7340: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7350: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
7360: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
7370: 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
7380: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7390: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
73a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
73b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
73c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
73d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
73e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
73f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7410: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7420: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7430: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7440: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
7450: 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
7460: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7470: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7480: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7490: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
74a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
74b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
74c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
74d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
74e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
74f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7500: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7510: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7520: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7530: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
7540: 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
7550: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
7560: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7570: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7580: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7590: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
75a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
75b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
75c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
75d0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
75e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
75f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7600: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7610: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
7620: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
7630: 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
7640: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
7650: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
7660: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7670: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7680: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7690: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
76a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
76b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
76c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
76d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
76e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
76f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7700: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7710: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
7720: 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
7730: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7740: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7750: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7760: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7770: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7780: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7790: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
77a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
77b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
77c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
77d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
77e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
77f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7800: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
7810: 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
7820: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7830: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7840: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7850: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7860: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7870: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7880: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7890: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
78a0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
78b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
78c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
78d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
78e0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
78f0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
7900: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7910: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7920: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7930: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7940: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7950: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7960: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7970: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7980: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7990: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
79a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
79b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
79c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
79d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
79e0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
79f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7a00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7a10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7a20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7a30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7a40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7a50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7a60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7a70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7a80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7a90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7aa0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7ab0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7ac0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
7ad0: 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
7ae0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
7af0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7b00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7b10: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7b20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7b30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7b40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7b50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
7b60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
7b70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7b80: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7b90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7ba0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
7bb0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
7bc0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
7bd0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7be0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7bf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7c00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7c10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7c20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7c30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7c40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7c50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7c60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7c70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7c80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7c90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7ca0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
7cb0: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
7cc0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7cd0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7ce0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7cf0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7d00: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7d10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7d20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7d30: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7d40: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7d50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7d60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7d70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7d80: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7d90: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
7da0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
7db0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7dc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7dd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7de0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7df0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7e10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7e20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7e30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7e40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7e50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7e60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7e70: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7e80: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
7e90: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7ea0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7eb0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7ec0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7ee0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7ef0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7f00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7f10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7f20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7f30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7f40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7f50: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
7f60: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
7f70: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
7f80: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7f90: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7fa0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7fb0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7fc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7fd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7fe0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7ff0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8000: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8010: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8020: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8030: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8040: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
8050: 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
8060: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
8070: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8080: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8090: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
80a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
80b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
80c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
80d0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
80e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
80f0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8100: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8110: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8120: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8130: 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
8140: 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
8150: 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f  l, int nBytes, o
8160: 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ut IntPtr stmt, 
8170: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52 65  out IntPtr ptrRe
8180: 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
8190: 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
81a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
81b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
81c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
81d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
81e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
81f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8200: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8210: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8220: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8230: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8240: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8250: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8260: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
8270: 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
8280: 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
8290: 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72  ytes, out IntPtr
82a0: 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74   stmt, out IntPt
82b0: 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
82c0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
82d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
82e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
82f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8300: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8310: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8320: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8330: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8340: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8350: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8360: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8370: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8380: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8390: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
83a0: 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
83b0: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
83c0: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
83d0: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
83e0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
83f0: 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e  DataType, out In
8400: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
8410: 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   out int notNull
8420: 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72  , out int primar
8430: 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75  yKey, out int au
8440: 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
8450: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8460: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8470: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8480: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8490: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
84a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
84b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
84c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
84d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
84e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
84f0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
8500: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
8510: 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
8520: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8530: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8540: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8550: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8560: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8570: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8580: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8590: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
85a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
85b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
85c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
85d0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
85e0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
85f0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
8600: 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
8610: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
8620: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8630: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
8640: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
8650: 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
8660: 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
8670: 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
8680: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
8690: 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
86a0: 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
86b0: 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
86c0: 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
86d0: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
86e0: 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
86f0: 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
8700: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
8710: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
8720: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8730: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8740: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8750: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
8760: 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
8770: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
8780: 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e 74 20 74  ntext, out int t
8790: 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e 63  ype, out int enc
87a0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
87b0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
87c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
87d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
87e0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
87f0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
8800: 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
8810: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
8820: 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
8830: 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
8840: 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
8850: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8860: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8870: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8880: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8890: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
88a0: 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
88b0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
88c0: 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
88d0: 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64 29   out long rowid)
88e0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
88f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8900: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8910: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
8920: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
8930: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
8940: 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
8950: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
8960: 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
8970: 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
8980: 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f  [] ColumnName, o
8990: 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ut int sortOrder
89a0: 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f  , out int onErro
89b0: 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 43 6f  r, out IntPtr Co
89c0: 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74  llation, out int
89d0: 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
89e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
89f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
8a00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8a10: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
8a20: 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65  e3_resetall_inte
8a30: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
8a40: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8a50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8a60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8a70: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
8a80: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72  qlite3_table_cur
8a90: 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  sor_interop(IntP
8aa0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c  tr stmt, int db,
8ab0: 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61   int tableRootPa
8ac0: 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  ge);....#endif..
8ad0: 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
8ae0: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
8af0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
8b00: 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c  Standard API cal
8b10: 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73  ls global across
8b20: 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72   versions.  Ther
8b30: 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74  e are a few inst
8b40: 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70  ances of interop
8b50: 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73   calls..    // s
8b60: 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65  cattered in here
8b70: 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f  , but they are o
8b80: 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20  nly active when 
8b90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8ba0: 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63  FRAMEWORK is dec
8bb0: 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67  lared...    #reg
8bc0: 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c  ion standard sql
8bd0: 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23  ite api calls..#
8be0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8bf0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8c00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8c10: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8c20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8c30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8c40: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8c50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8c60: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8c70: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8c80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8c90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8ca0: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c  sqlite3_enable_l
8cb0: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
8cc0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
8cd0: 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d  b, int enable);.
8ce0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8cf0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8d00: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8d10: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8d20: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8d30: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8d40: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8d50: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8d60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8d70: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8d80: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8d90: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
8da0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64  ode sqlite3_load
8db0: 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20  _extension(..   
8dc0: 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
8dd0: 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c  byte[] fileName,
8de0: 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65   byte[] procName
8df0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72  , ref IntPtr pEr
8e00: 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ror);....#if !PL
8e10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8e20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8e30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8e40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8e50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8e60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
8e70: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
8e80: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
8e90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8ea0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8eb0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
8ec0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
8ed0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8ee0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8ef0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8f00: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
8f10: 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
8f20: 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
8f30: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
8f40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8f50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8f60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8f70: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8f80: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8f90: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8fa0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8fb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8fc0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8fd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8fe0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
8ff0: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
9000: 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ion();....#if !P
9010: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9020: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9030: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9040: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9050: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9060: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9070: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9080: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9090: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
90a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
90b0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
90c0: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
90d0: 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23  n_number();....#
90e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
90f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9100: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9110: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9130: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9140: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9150: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9160: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9170: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9180: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9190: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
91a0: 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69  ourceid();....#i
91b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
91c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
91d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
91e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
91f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9200: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9210: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9220: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9230: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
9240: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9250: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
9260: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
9270: 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
9280: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9290: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
92a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
92b0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
92c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
92d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
92e0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
92f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9300: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9310: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9320: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9330: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
9340: 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
9350: 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
9360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9370: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9380: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9390: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
93a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
93b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
93c0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
93d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
93e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
93f0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9400: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
9410: 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
9420: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
9430: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9440: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9450: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9460: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9470: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9480: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9490: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
94a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
94b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
94c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
94d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
94e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
94f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
9500: 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
9510: 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64  me, out IntPtr d
9520: 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
9530: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e  gsEnum flags, In
9540: 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69  tPtr vfs);....#i
9550: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9560: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9570: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9580: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9590: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
95a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
95b0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
95c0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
95d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
95e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
95f0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
9600: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
9610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9620: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9630: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
9640: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
9650: 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  n16(string fileN
9660: 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ame, out IntPtr 
9670: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
9680: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9690: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
96a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
96b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
96c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
96d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
96e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
96f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9700: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9710: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9720: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
9730: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
9740: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
9750: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9760: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9770: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9780: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9790: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
97a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
97b0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    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 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
97e0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
97f0: 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  id(IntPtr db);..
9800: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9810: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9820: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9830: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9840: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9850: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9860: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9870: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9880: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9890: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
98a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
98b0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
98c0: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49  qlite3_changes(I
98d0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
98e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
98f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9910: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9920: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9930: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9940: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
9950: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9960: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
9970: 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a  memory_used();..
9980: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9990: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
99a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
99b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
99c0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
99d0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
99e0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
99f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
9a00: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
9a10: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
9a20: 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74  ry_highwater(int
9a30: 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65   resetFlag);..#e
9a40: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
9a50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9a60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9a70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9a80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9a90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9aa0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9ab0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9ac0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9ad0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9ae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9af0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9b00: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9b10: 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
9b20: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9b30: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9b40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9b50: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9b60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9b70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9b80: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9b90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9ba0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9bb0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9bc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9bd0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
9be0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
9bf0: 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c  meout(IntPtr db,
9c00: 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66   int ms);....#if
9c10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9c20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9c30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9c40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9c50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9c60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9c70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9c80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9c90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9ca0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9cb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9cc0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9cd0: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
9ce0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
9cf0: 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76   index, Byte[] v
9d00: 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
9d10: 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65   IntPtr nTransie
9d20: 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nt);....#if !PLA
9d30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9d40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9d50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9d60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9d70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9d80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9d90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9da0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9db0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9dc0: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9dd0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9de0: 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
9df0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
9e00: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9e10: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9e20: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9e30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9e40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9e50: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9e60: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9e70: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9e80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9ea0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9eb0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
9ec0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
9ed0: 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
9ee0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74  , int index, int
9ef0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
9f00: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
9f10: 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73   This really jus
9f20: 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33  t calls "sqlite3
9f30: 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65  _bind_int"; howe
9f40: 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
9f50: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
9f60: 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
9f70: 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
9f80: 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e  gned (32-bit) in
9f90: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
9fa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9fb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9fc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9fd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
9fe0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
9ff0: 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c  _bind_int", Call
a000: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a010: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a020: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a030: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a040: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
a050: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
a060: 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a  e3_bind_int")]..
a070: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
a080: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a090: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
a0a0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
a0b0: 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  uint(IntPtr stmt
a0c0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e  , int index, uin
a0d0: 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
a0e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a0f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a100: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a110: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a120: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a130: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a140: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
a150: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a160: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
a170: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
a180: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
a190: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e  , int index, lon
a1a0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
a1b0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
a1c0: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
a1d0: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
a1e0: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
a1f0: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
a200: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
a210: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
a220: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
a230: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
a240: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
a250: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
a260: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a270: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a280: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a290: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
a2a0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
a2b0: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
a2c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a2d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a2e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
a2f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a300: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a310: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a320: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(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 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
a350: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
a360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a370: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a380: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a390: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a3a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a3b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a3c0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a3d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a3e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a3f0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a400: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a410: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a420: 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28  lite3_bind_null(
a430: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
a440: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
a450: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a460: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a470: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a480: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a490: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a4a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a4b0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a4c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a4d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a4e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a4f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
a500: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
a510: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49  ite3_bind_text(I
a520: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
a530: 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61  index, byte[] va
a540: 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
a550: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
a560: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a570: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a580: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a590: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a5a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a5b0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a5c0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a5d0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a5e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a5f0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a600: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a610: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
a620: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
a630: 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  r_count(IntPtr s
a640: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
a650: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a660: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a670: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a680: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a690: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a6a0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a6b0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
a6c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a6d0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
a6e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a6f0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
a700: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
a710: 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74  eter_index(IntPt
a720: 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73  r stmt, byte[] s
a730: 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  trName);....#if 
a740: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a750: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a760: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a770: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a780: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a790: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a7a0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a7b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a7c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a7d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a7e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
a7f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
a800: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
a810: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
a820: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a830: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a840: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a850: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a860: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a870: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a880: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a890: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a8a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a8b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a8c0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a8d0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a8e0: 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74  step(IntPtr stmt
a8f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a900: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a910: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a920: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a930: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a940: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a950: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a960: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a970: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
a980: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
a990: 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
a9a0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
a9b0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
a9c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a9d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a9e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a9f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
aa00: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
aa10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
aa20: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
aa30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
aa40: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
aa50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
aa60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
aa70: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
aa80: 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
aa90: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
aaa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
aab0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
aac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
aad0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
aae0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
aaf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ab00: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
ab10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ab20: 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
ab30: 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49  3_column_int64(I
ab40: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ab50: 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d  index);..#endif.
ab60: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ab70: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ab80: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ab90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
aba0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
abb0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
abc0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
abd0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
abe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
abf0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ac00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ac10: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ac20: 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49  e3_column_blob(I
ac30: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ac40: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
ac50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ac60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ac70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ac80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ac90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
aca0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
acb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
acc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
acd0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ace0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
acf0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
ad00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
ad10: 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74  ytes(IntPtr stmt
ad20: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
ad30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ad40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ad50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ad60: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ad70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ad80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ad90: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ada0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
adb0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
adc0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
add0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ade0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
adf0: 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74  lumn_bytes16(Int
ae00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
ae10: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
ae20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ae30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ae40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ae50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ae60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ae70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ae80: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ae90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
aea0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
aeb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
aec0: 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
aed0: 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63  finity sqlite3_c
aee0: 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74  olumn_type(IntPt
aef0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
af00: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
af10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
af20: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
af30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
af40: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
af50: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
af60: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
af70: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
af80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
af90: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
afa0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
afb0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
afc0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
afd0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
afe0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
aff0: 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
b000: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
b010: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c  User, SQLiteColl
b020: 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a  ation func);....
b030: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
b040: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
b050: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b060: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
b070: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b080: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b090: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
b0a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b0b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
b0c0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
b0d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b0e0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67   int sqlite3_agg
b0f0: 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74  regate_count(Int
b100: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
b110: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b120: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b130: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b140: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b150: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b160: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b170: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b180: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b190: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b1a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b1b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b1c0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b1d0: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50  _value_blob(IntP
b1e0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
b1f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b200: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b210: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b220: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b230: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b240: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b250: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b260: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b270: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b280: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b290: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b2a0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
b2b0: 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  es(IntPtr p);...
b2c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b2d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b2e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b2f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b300: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b310: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b320: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b330: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b340: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b350: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b360: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b370: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
b380: 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50  lue_bytes16(IntP
b390: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
b3a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b3b0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b3c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b3d0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b3e0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b3f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b400: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b410: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64   static extern d
b420: 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61  ouble sqlite3_va
b430: 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  lue_double(IntPt
b440: 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  r p);..#endif...
b450: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b460: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b470: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b480: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b490: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b4a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b4b0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b4c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b4d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b4e0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b4f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b500: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
b510: 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70  lue_int(IntPtr p
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: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b5a0: 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
b5b0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
b5c0: 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t64(IntPtr p);..
b5d0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
b5e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b5f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b600: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b610: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b620: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b630: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b640: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b650: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b660: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b670: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b680: 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
b690: 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
b6a0: 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74  value_type(IntPt
b6b0: 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
b6c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b6d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b6e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b6f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b700: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b710: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b720: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
b730: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b740: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
b750: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b760: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
b770: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c  qlite3_result_bl
b780: 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
b790: 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
b7a0: 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
b7b0: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
b7c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b7d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b7e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b7f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b800: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b810: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b820: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
b830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b840: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
b850: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
b860: 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  le(IntPtr contex
b870: 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  t, double value)
b880: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
b890: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b8a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b8b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b8c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b8d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b8e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b8f0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b910: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b920: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b930: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b940: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b950: 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63  t_error(IntPtr c
b960: 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73  ontext, byte[] s
b970: 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29  trErr, int nLen)
b980: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b990: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b9a0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b9b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b9c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b9d0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b9e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b9f0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ba00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ba10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ba20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ba30: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
ba40: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
ba50: 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  code(IntPtr cont
ba60: 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72  ext, SQLiteError
ba70: 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  Code value);....
ba80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ba90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
baa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bab0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
bac0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
bad0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
bae0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
baf0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bb00: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
bb10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bb20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bb30: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
bb40: 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69  sult_error_toobi
bb50: 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  g(IntPtr context
bb60: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
bb70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bb80: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bb90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bba0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bbb0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bbc0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bbd0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bbe0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bbf0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bc00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bc10: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
bc20: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
bc30: 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f  _nomem(IntPtr co
bc40: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
bc50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
bc60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
bc70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bc80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
bc90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bca0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bcb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
bcc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bcd0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
bce0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bcf0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
bd00: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
bd10: 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e  value(IntPtr con
bd20: 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c  text, IntPtr val
bd30: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
bd40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bd50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bd60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bd70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bd80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bd90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bda0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bdb0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bdc0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bdd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bde0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
bdf0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
be00: 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  oblob(IntPtr con
be10: 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  text, int nLen);
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 69 6e 74 28 49 6e 74  3_result_int(Int
bef0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
bf00: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
bf10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bf20: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bf30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bf40: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
bf50: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
bf60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
bf70: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
bf80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bf90: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
bfa0: 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74  sult_int64(IntPt
bfb0: 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20  r context, long 
bfc0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
bfd0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
bfe0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
bff0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c000: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c010: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c020: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c030: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c040: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c050: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c060: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c070: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c080: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c090: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
c0a0: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
c0b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c0c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c0d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c0e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c0f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c110: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c120: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c130: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c140: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c150: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c160: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
c170: 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
c180: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
c190: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
c1a0: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
c1b0: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
c1c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c1d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c1e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c1f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c200: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c210: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c220: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c240: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c250: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c260: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c270: 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
c280: 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
c290: 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
c2a0: 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
c2b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c2c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c2d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c2e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c2f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c300: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c310: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
c320: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
c330: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c340: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c350: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
c360: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
c370: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c380: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c390: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
c3a0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
c3b0: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
c3c0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
c3d0: 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
c3e0: 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
c3f0: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
c400: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c410: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c420: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c430: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c440: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c450: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c460: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
c470: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
c480: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c490: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c4a0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
c4b0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
c4c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c4d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c4e0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c4f0: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
c500: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c510: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
c520: 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
c530: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c540: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c550: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c560: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c570: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c580: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c590: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
c5a0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
c5b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c5c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c5d0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
c5e0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
c5f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c600: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c610: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
c620: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
c630: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c640: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
c650: 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
c660: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
c670: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
c680: 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  DEC..#if !PLATFO
c690: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c6a0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c6b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c6c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c6d0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c6e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c6f0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c700: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c710: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c720: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c730: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c740: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
c750: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
c760: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
c770: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
c780: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c790: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c7a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c7b0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c7c0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c7d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c7e0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c7f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c800: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c810: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c820: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c830: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c840: 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
c850: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
c860: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
c870: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
c880: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c890: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c8a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c8b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c8c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c8d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c8e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c8f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c900: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c910: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c920: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
c930: 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
c940: 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
c950: 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61  LiteUpdateCallba
c960: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
c970: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
c980: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c990: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c9a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c9b0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c9c0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c9d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c9e0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c9f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ca00: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ca10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ca20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ca30: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d  Ptr sqlite3_comm
ca40: 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  it_hook(IntPtr d
ca50: 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  b, SQLiteCommitC
ca60: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
ca70: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
ca80: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ca90: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
caa0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cab0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
cac0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cad0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cae0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
caf0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cb00: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
cb10: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
cb20: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cb30: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
cb40: 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62  _trace(IntPtr db
cb50: 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
cb60: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
cb70: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20  tr pvUser);.... 
cb80: 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
cb90: 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b  te3_config() tak
cba0: 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
cbb0: 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
cbc0: 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
cbd0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
cbe0: 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
cbf0: 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61  ssible calls tha
cc00: 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65  t we want to use
cc10: 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
cc20: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cc30: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cc40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
cc50: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
cc60: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
cc70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cc80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cc90: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cca0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
ccb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
ccc0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
ccd0: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
cce0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ccf0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cd00: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
cd10: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
cd20: 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66  _none(SQLiteConf
cd30: 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a  igOpsEnum op);..
cd40: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cd50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cd60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cd70: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
cd80: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
cd90: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
cda0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cdb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cdc0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
cdd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cde0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
cdf0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
ce00: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
ce10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ce20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ce30: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
ce40: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
ce50: 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  int(SQLiteConfig
ce60: 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
ce70: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
ce80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ce90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
cea0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ceb0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
cec0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
ced0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
cee0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cef0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cf00: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cf10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cf20: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
cf30: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
cf40: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
cf50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
cf60: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
cf70: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
cf80: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c  3_config_log(SQL
cf90: 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
cfa0: 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61   op, SQLiteLogCa
cfb0: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
cfc0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
cfd0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
cfe0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
cff0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d000: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d010: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d020: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d030: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d040: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d050: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d060: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d070: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d080: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d090: 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
d0a0: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
d0b0: 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
d0c0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
d0d0: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
d0e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d0f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d100: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d110: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d120: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d130: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d140: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
d150: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d160: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
d170: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d180: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d190: 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
d1a0: 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
d1b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d1c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d1d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d1e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d1f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d200: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d210: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d220: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d230: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d240: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d250: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d260: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d270: 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28  te3_db_filename(
d280: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
d290: 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  r dbName);....#i
d2a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d2b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
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 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d2e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d2f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d300: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d310: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d320: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d330: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d340: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d350: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
d360: 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
d370: 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
d380: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d390: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d3a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d3b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d3c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d3d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d3e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d3f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d410: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d420: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d430: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
d440: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
d450: 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
d460: 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
d470: 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
d480: 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f  ntPtr pvParam, o
d490: 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ut IntPtr errMsg
d4a0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
d4b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d4c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d4d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d4e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d4f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
d500: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
d510: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
d520: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d530: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
d540: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d550: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
d560: 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
d570: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
d580: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d590: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d5a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d5b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d5c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d5d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d5e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d5f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d600: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d610: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d620: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d630: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d640: 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
d650: 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
d660: 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
d670: 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  noff);....#if !P
d680: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d690: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d6a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d6b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d6c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d6d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d6e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d6f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d700: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d710: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d720: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d730: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d740: 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  e3_errcode(IntPt
d750: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
d760: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d770: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d780: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d790: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d7a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d7b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d7c0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d7d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d7e0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d7f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d800: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d810: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d820: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
d830: 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
d840: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d850: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d860: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d870: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d880: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d890: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d8a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d8b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d8c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d8d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d8e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d8f0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d900: 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65  e3_errstr(SQLite
d910: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f  ErrorCode rc); /
d920: 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a  * 3.7.15+ */....
d930: 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
d940: 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73  ite3_log() takes
d950: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
d960: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
d970: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
d980: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
d990: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
d9a0: 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
d9b0: 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
d9c0: 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e  y exposing a sin
d9d0: 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d  gle string, and.
d9e0: 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f  .    // depend o
d9f0: 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20  n the caller to 
da00: 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e  format the strin
da10: 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  g...#if !PLATFOR
da20: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
da30: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
da40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
da50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
da60: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
da70: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
da80: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
da90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
daa0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dab0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dac0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
dad0: 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f  3_log(SQLiteErro
dae0: 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20  rCode iErrCode, 
daf0: 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b  byte[] zFormat);
db00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
db10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
db20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
db30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
db40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
db50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
db60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
db70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
db80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
db90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dba0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dbb0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
dbc0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c  Code sqlite3_fil
dbd0: 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72  e_control(IntPtr
dbe0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e   db, byte[] zDbN
dbf0: 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
dc00: 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69  Ptr pArg);....#i
dc10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
dc20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dc30: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dc40: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
dc50: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
dc60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
dc70: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
dc80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
dc90: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
dca0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
dcb0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
dcc0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61  ntPtr sqlite3_ba
dcd0: 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72  ckup_init(IntPtr
dce0: 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20   destDb, byte[] 
dcf0: 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74  zDestName, IntPt
dd00: 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65  r sourceDb, byte
dd10: 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b  [] zSourceName);
dd20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
dd30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd40: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
dd50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
dd60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dd70: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
dd80: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
dd90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
dda0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ddb0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ddc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ddd0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
dde0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
ddf0: 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20  kup_step(IntPtr 
de00: 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67  backup, int nPag
de10: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
de20: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
de30: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
de40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
de50: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
de60: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
de70: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
de80: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
de90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
dea0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
deb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
dec0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
ded0: 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69  te3_backup_remai
dee0: 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b  ning(IntPtr back
def0: 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
df00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
df10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
df20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
df30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
df40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
df50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
df60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
df70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
df80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
df90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dfa0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
dfb0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65  ite3_backup_page
dfc0: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63  count(IntPtr bac
dfd0: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
dfe0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
dff0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e000: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e010: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e020: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e030: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e040: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e050: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e060: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e070: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e080: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
e090: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
e0a0: 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
e0b0: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
e0c0: 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
e0d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e0e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e100: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e110: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e130: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e140: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e150: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e170: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e180: 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
e190: 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
e1a0: 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
e1b0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e1c0: 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
e1d0: 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
e1e0: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
e1f0: 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
e200: 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
e210: 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
e220: 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
e230: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
e240: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
e250: 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
e260: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
e270: 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
e280: 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21  api calls..#if !
e290: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e2a0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e2b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e2c0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e2d0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e2e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e2f0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e300: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e310: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e320: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e330: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e340: 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
e350: 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
e360: 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
e370: 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
e380: 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
e390: 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
e3a0: 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
e3b0: 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
e3c0: 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
e3d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e3e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e3f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e400: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e410: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e420: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e430: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e440: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e450: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e460: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e470: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
e480: 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
e490: 64 75 6c 65 28 72 65 66 20 73 71 6c 69 74 65 33  dule(ref sqlite3
e4a0: 5f 6d 6f 64 75 6c 65 20 70 4d 6f 64 75 6c 65 29  _module pModule)
e4b0: 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
e4c0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
e4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e510: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
e520: 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72  ion sqlite inter
e530: 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e  op api calls (.N
e540: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
e550: 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20  work only)..#if 
e560: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e570: 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
e580: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
e590: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e5a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
e5b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e5c0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
e5d0: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
e5e0: 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
e5f0: 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e  tPtr db, ref lon
e600: 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20  g rowId);....   
e610: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e620: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
e630: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e640: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
e650: 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e  3_memory_used_in
e660: 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62  terop(ref long b
e670: 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
e680: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e690: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
e6a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e6b0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
e6c0: 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f  emory_highwater_
e6d0: 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65  interop(int rese
e6e0: 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20  tFlag, ref long 
e6f0: 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
e700: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e710: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
e720: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e730: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e740: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
e750: 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
e760: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
e770: 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
e780: 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
e790: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e7a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
e7b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e7c0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e7d0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
e7e0: 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  d_int64_interop(
e7f0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
e800: 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
e810: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
e820: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e830: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
e840: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
e850: 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22  d_int64_interop"
e860: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
e870: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
e880: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
e890: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
e8a0: 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
e8b0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
e8c0: 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c  x, ref ulong val
e8d0: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
e8e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e8f0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
e900: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e910: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
e920: 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  umn_double_inter
e930: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
e940: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 64  int index, out d
e950: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
e960: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e970: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
e980: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e990: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
e9a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
e9b0: 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
e9c0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
e9d0: 78 2c 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75  x, out long valu
e9e0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
e9f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ea00: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ea10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
ea20: 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
ea30: 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  e_double_interop
ea40: 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 64  (IntPtr p, out d
ea50: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
ea60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ea70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ea80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ea90: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
eaa0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
eab0: 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
eac0: 20 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76 61   p, out Int64 va
ead0: 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
eae0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
eaf0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
eb00: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
eb10: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
eb20: 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  sult_double_inte
eb30: 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
eb40: 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  xt, ref double v
eb50: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
eb60: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
eb70: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
eb80: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
eb90: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
eba0: 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65  esult_int64_inte
ebb0: 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
ebc0: 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61  xt, ref Int64 va
ebd0: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
ebe0: 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43     // PLATFORM_C
ebf0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
ec00: 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
ec10: 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  ARD..    #endreg
ec20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
ec30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
ec80: 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c  egion Native Del
ec90: 65 67 61 74 65 73 0d 0a 23 69 66 20 21 50 4c 41  egates..#if !PLA
eca0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ecb0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
ecc0: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
ecd0: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
ece0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
ecf0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
ed00: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
ed10: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72  iteErrorCode xCr
ed20: 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  eate(..        I
ed30: 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
ed40: 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
ed50: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
ed60: 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61  gc,..        [Ma
ed70: 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
ed80: 64 54 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53  dType.LPArray, S
ed90: 69 7a 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20  izeParamIndex = 
eda0: 32 29 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  2)]..        Int
edb0: 50 74 72 5b 5d 20 61 72 67 76 2c 0d 0a 20 20 20  Ptr[] argv,..   
edc0: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
edd0: 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
ede0: 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
edf0: 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
ee00: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ee50: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ee60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ee70: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
ee80: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
ee90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
eea0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
eeb0: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
eec0: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
eed0: 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a  Code xConnect(..
eee0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
eef0: 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
ef00: 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
ef10: 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
ef20: 20 20 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73        [MarshalAs
ef30: 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
ef40: 50 41 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61  PArray, SizePara
ef50: 6d 49 6e 64 65 78 20 3d 20 32 29 5d 0d 0a 20 20  mIndex = 2)]..  
ef60: 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61        IntPtr[] a
ef70: 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
ef80: 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
ef90: 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
efa0: 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
efb0: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
efc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f000: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
f010: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f020: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
f030: 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
f040: 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
f050: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f060: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
f070: 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
f080: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
f090: 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
f0a0: 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
f0b0: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
f0c0: 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d   pIndex..    );.
f0d0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
f0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
f130: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f140: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
f150: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
f160: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
f170: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f180: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
f190: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
f1a0: 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63  eErrorCode xDisc
f1b0: 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
f1c0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
f1d0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f220: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
f230: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f240: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f250: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
f260: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
f270: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f280: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
f290: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
f2a0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f2b0: 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20   xDestroy(..    
f2c0: 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
f2d0: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
f330: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f340: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f350: 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
f360: 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
f370: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f380: 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
f390: 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
f3a0: 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
f3b0: 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20  ode xOpen(..    
f3c0: 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
f3d0: 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
f3e0: 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
f3f0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
f450: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f460: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f470: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
f480: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
f490: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f4a0: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
f4b0: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
f4c0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f4d0: 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
f4e0: 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
f4f0: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
f500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
f550: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f560: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f570: 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
f580: 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
f590: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f5a0: 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
f5b0: 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
f5c0: 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
f5d0: 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20  ode xFilter(..  
f5e0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
f5f0: 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69  rsor,..        i
f600: 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  nt idxNum,..    
f610: 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74      IntPtr idxSt
f620: 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
f630: 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
f640: 6e 74 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20  ntPtr[] argv..  
f650: 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
f660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
f6b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f6c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f6d0: 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
f6e0: 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
f6f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f700: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f710: 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
f720: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
f730: 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
f740: 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
f750: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
f760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f7b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f7c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f7d0: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f7e0: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f7f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f800: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f810: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f820: 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20  e int xEof(..   
f830: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
f840: 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
f850: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f8a0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f8b0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f8c0: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
f8d0: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
f8e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f8f0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
f900: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
f910: 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
f920: 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
f930: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
f940: 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
f950: 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
f960: 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  t,..        int 
f970: 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  index..    );...
f980: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
f990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f9e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f9f0: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
fa00: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
fa10: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
fa20: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
fa30: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
fa40: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
fa50: 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28  rrorCode xRowId(
fa60: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
fa70: 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
fa80: 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
fa90: 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  d..    );....   
faa0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
faf0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fb00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fb10: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
fb20: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
fb30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
fb40: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
fb50: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
fb60: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
fb70: 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
fb80: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
fb90: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
fba0: 74 20 6e 44 61 74 61 2c 0d 0a 20 20 20 20 20 20  t nData,..      
fbb0: 20 20 49 6e 74 50 74 72 20 61 70 44 61 74 61 2c    IntPtr apData,
fbc0: 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
fbd0: 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
fbe0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
fbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
fc40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
fc50: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
fc60: 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
fc70: 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
fc80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fc90: 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
fca0: 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
fcb0: 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
fcc0: 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  in(..        Int
fcd0: 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
fce0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
fcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
fd40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fd50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
fd60: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
fd70: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
fd80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fd90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
fda0: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
fdb0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79  iteErrorCode xSy
fdc0: 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nc(..        Int
fdd0: 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
fde0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe30: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
fe40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fe50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
fe60: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
fe70: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
fe80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fe90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
fea0: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
feb0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
fec0: 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49  mmit(..        I
fed0: 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
fee0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
ff40: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ff50: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
ff60: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
ff70: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
ff80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ff90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
ffa0: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
ffb0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
ffc0: 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
ffd0: 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
ffe0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
10040 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10050 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10060 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
10070 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
10080 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10090 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
100a0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
100b0 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  te int xFindFunc
100c0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  tion(..        I
100d0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
100e0 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
100f0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
10100 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
10110 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
10120 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
10130 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
10140 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20   pUserData..    
10150 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
10160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
101a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
101b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
101c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
101d0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
101e0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
101f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
10210 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
10220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
10230 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
10240 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
10250 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
10260 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ew..    );....  
10270 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
102c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
102d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
102e0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
102f0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
10300 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10310 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
10320 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
10330 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
10340 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
10350 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
10360 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
10370 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
10380 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f  ////////////////
103d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
103e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
103f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10400 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
10410 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
10420 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10430 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
10440 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
10450 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
10460 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
10470 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
10480 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
10490 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
104a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
10500 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10510 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10520 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
10530 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
10540 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10550 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10560 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
10570 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10580 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
10590 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
105a0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
105b0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
105c0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
105d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10610 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
10620 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10630 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
10640 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
10650 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
10660 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10670 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
10680 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
10690 6e 74 20 78 46 75 6e 63 28 0d 0a 20 20 20 20 20  nt xFunc(..     
106a0 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65     IntPtr pConte
106b0 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  xt,..        int
106c0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
106d0 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
106e0 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
106f0 2c 20 53 69 7a 65 50 61 72 61 6d 49 6e 64 65 78  , SizeParamIndex
10700 20 3d 20 31 29 5d 0d 0a 20 20 20 20 20 20 20 20   = 1)]..        
10710 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20  IntPtr[] argv.. 
10720 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10770 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
10780 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10790 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
107a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
107b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
107c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
107d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
107e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
107f0 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f   void xDestroyMo
10800 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69  dule(IntPtr pCli
10810 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 23  entData);..    #
10820 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
10830 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10880 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
10890 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 20  ve Structures.. 
108a0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
108b0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
108c0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
108d0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
108e0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
108f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
10900 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  lic int iVersion
10910 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10920 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  c xCreate xCreat
10930 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
10940 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e  ic xConnect xCon
10950 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
10960 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78  ublic xBestIndex
10970 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20   xBestIndex;..  
10980 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 69        public xDi
10990 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
109a0 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
109b0 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78  ublic xDestroy x
109c0 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20  Destroy;..      
109d0 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78    public xOpen x
109e0 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  Open;..        p
109f0 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c  ublic xClose xCl
10a00 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ose;..        pu
10a10 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46 69  blic xFilter xFi
10a20 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70  lter;..        p
10a30 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78  ublic xNext xNex
10a40 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
10a50 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20  ic xEof xEof;.. 
10a60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
10a70 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a  olumn xColumn;..
10a80 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10a90 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20  RowId xRowId;.. 
10aa0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 55         public xU
10ab0 70 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a  pdate xUpdate;..
10ac0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10ad0 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20  Begin xBegin;.. 
10ae0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53         public xS
10af0 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20  ync xSync;..    
10b00 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d      public xComm
10b10 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20  it xCommit;..   
10b20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
10b30 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b  lback xRollback;
10b40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10b50 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78   xFindFunction x
10b60 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20  FindFunction;.. 
10b70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
10b80 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a  ename xRename;..
10b90 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d          /* The m
10ba0 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
10bb0 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
10bc0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64   the sqlite3_mod
10bd0 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20  ule..         * 
10be0 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62  object.  Those b
10bf0 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
10c00 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74  sion 2 and great
10c10 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  er. */..        
10c20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e  public xSavepoin
10c30 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20  t xSavepoint;.. 
10c40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
10c50 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b  elease xRelease;
10c60 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10c70 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f   xRollbackTo xRo
10c80 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d  llbackTo;..    }
10c90 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ce0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
10cf0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
10d00 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
10d10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10d20 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74  truct sqlite3_vt
10d30 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ab..    {..     
10d40 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
10d50 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
10d60 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52     public int nR
10d70 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52  ef; /* NO LONGER
10d80 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
10d90 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
10da0 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d  zErrMsg;..    }.
10db0 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e00 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
10e10 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
10e20 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
10e30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10e40 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
10e50 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d  b_cursor..    {.
10e60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
10e70 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20  IntPtr pVTab;.. 
10e80 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
10ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ed0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
10ee0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
10ef0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
10f00 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
10f10 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
10f20 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
10f30 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  nt..    {..     
10f40 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
10f50 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
10f60 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
10f70 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
10f80 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
10f90 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
10fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
10fb0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
10fc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
10fd0 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d  f (constraint !=
10fe0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
10ff0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11000 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
11010 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c   constraint.iCol
11020 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
11030 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74        op = const
11040 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20  raint.op;..     
11050 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62 6c             usabl
11060 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  e = constraint.u
11070 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
11080 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66          iTermOff
11090 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  set = constraint
110a0 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20  .iTermOffset;.. 
110b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
110c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
110d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
110e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11120 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
11130 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
11140 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
11150 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f  IndexConstraintO
11160 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70  p op;..        p
11170 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c  ublic byte usabl
11180 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
11190 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73  ic int iTermOffs
111a0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
111b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
111c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11200 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
11210 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
11220 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
11230 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
11240 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
11250 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20  derby..    {..  
11260 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
11270 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
11280 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  by(..           
11290 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
112a0 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20  rBy orderBy..   
112b0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
112c0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
112d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
112e0 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64           if (ord
112f0 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  erBy != null).. 
11300 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
11320 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e  olumn = orderBy.
11330 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
11340 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20 3d            desc =
11350 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a   orderBy.desc;..
11360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
11370 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11380 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
113d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
113e0 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f  t iColumn; /* Co
113f0 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a  lumn number */..
11400 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
11410 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54  yte desc;   /* T
11420 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46  rue for DESC.  F
11430 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f  alse for ASC. */
11440 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
114a0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
114b0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
114c0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
114d0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
114e0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
114f0 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20  raint_usage..   
11500 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
11510 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
11520 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
11530 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
11540 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
11550 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74  raintUsage const
11560 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20  raintUsage..    
11570 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
11580 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
11590 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
115a0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
115b0 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e  traintUsage != n
115c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
115d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
115e0 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d       argvIndex =
115f0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
11600 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20  .argvIndex;..   
11610 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69               omi
11620 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  t = constraintUs
11630 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  age.omit;..     
11640 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11650 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
11660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
116b0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67    public int arg
116c0 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30  vIndex; /* if >0
116d0 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20  , constraint is 
116e0 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20  part of argv to 
116f0 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20  xFilter */..    
11700 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
11710 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20  omit;     /* Do 
11720 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20  not code a test 
11730 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61  for this constra
11740 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  int */..    }...
11750 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
11760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117a0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
117b0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
117c0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
117d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
117e0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
117f0 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20  _info..    {..  
11800 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20        /* Inputs 
11810 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
11820 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69  ic int nConstrai
11830 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66  nt; /* Number of
11840 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e   entries in aCon
11850 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
11860 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
11870 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a  r aConstraint;..
11880 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
11890 6e 74 20 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20  nt nOrderBy;..  
118a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
118b0 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
118c0 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
118d0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
118e0 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
118f0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
11900 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
11910 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
11920 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
11930 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
11940 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
11950 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
11960 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
11970 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
11980 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
11990 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
119a0 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
119b0 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
119c0 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
119d0 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
119e0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
119f0 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
11a00 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
11a10 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
11a20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
11a30 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
11a40 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
11a50 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
11a60 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
11a70 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
11a80 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
11a90 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ndex */..    }..
11aa0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
11ab0 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46    }....#if PLATF
11ac0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11ad0 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  WORK..  internal
11ae0 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
11af0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a  CriticalHandle :
11b00 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
11b10 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  {..    private b
11b20 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a  ool _isClosed;..
11b30 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e      protected In
11b40 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a  tPtr handle;....
11b50 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72      protected Cr
11b60 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74  iticalHandle(Int
11b70 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  Ptr invalidHandl
11b80 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a  eValue)..    {..
11b90 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69        handle = i
11ba0 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
11bb0 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f  e;..      _isClo
11bc0 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  sed = false;..  
11bd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74    }....    ~Crit
11be0 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20  icalHandle()..  
11bf0 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
11c00 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
11c10 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
11c20 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d   void Cleanup().
11c30 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
11c40 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20   (!IsClosed)..  
11c50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
11c60 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20  his._isClosed = 
11c70 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69  true;..        i
11c80 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a  f (!IsInvalid)..
11c90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11ca0 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64       ReleaseHand
11cb0 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
11cc0 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
11cd0 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
11ce0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
11cf0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
11d00 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28  blic void Close(
11d10 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
11d20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
11d30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
11d40 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
11d50 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
11d60 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
11d70 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
11d80 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
11d90 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
11da0 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
11db0 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e    {..      Clean
11dc0 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  up();..    }....
11dd0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62      protected ab
11de0 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65  stract bool Rele
11df0 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  aseHandle();....
11e00 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f      protected vo
11e10 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74  id SetHandle(Int
11e20 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  Ptr value)..    
11e30 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
11e40 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d  = value;..    }.
11e50 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
11e60 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e  id SetHandleAsIn
11e70 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a  valid()..    {..
11e80 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20        _isClosed 
11e90 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47  = true;..      G
11ea0 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
11eb0 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d  ze(this);..    }
11ec0 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  ....    public b
11ed0 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20  ool IsClosed..  
11ee0 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
11ef0 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65   return _isClose
11f00 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  d; }..    }.... 
11f10 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
11f20 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  ct bool IsInvali
11f30 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
11f40 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  get;..    }.... 
11f50 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   }....#endif....
11f60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f90 2f 2f 2f 2f 2f 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 0d  ///////////////.
11fb0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
11fc0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
11fd0 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
11fe0 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20   // Handles the 
11ff0 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61  unmanaged databa
12000 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20  se pointer, and 
12010 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  provides finaliz
12020 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75  ation..    // su
12030 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20  pport for it... 
12040 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
12050 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43  ed class SQLiteC
12060 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
12070 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
12080 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c  ..    {..#if SQL
12090 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20  ITE_STANDARD && 
120a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
120b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
120c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
120d0 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65  egate void Close
120e0 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61  ConnectionCallba
120f0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
12100 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12110 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74  nHandle hdl, Int
12120 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
12130 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12140 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  tic CloseConnect
12150 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73  ionCallback clos
12160 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20  eConnection =.. 
12170 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
12180 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
12190 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ction;..#endif..
121a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121f0 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
12200 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12210 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
12220 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
12230 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
12240 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
12250 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
12260 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
122b0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
122c0 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20   ownHandle;.... 
122d0 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12320 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12330 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
12340 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
12350 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
12360 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20  nHandle db)..   
12370 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12380 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75      if (db != nu
12390 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
123a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
123b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
123c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
123d0 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63     lock (db.sync
123e0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12410 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e        return db.
12420 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
12430 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12440 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12450 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
12460 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
12470 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12480 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
124d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
124e0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
124f0 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62  dle(IntPtr db, b
12500 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
12510 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
12520 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  is(ownHandle).. 
12530 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
12540 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12550 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
12560 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
12570 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
12580 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
125a0 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77  s.ownHandle = ow
125b0 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
125c0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
125d0 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20  dle(db);..      
125e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
125f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
12600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
12650 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43   private SQLiteC
12660 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28  onnectionHandle(
12670 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
12680 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
12690 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
126a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
126b0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
126c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
126d0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
126e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
126f0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
12700 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76  (ref UnsafeNativ
12710 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
12720 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
12730 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
12740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
127a0 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
127b0 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
127c0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
127d0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
127e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
127f0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
12800 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
12810 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
12820 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12830 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c     if (!ownHandl
12840 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d  e) return true;.
12850 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
12860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
12870 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
12880 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12890 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
128a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128b0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
128c0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
128d0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
128e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128f0 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
12900 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23  tPtr.Zero);....#
12910 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
12920 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
12930 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
12940 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
12950 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
12960 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f           closeCo
12970 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
12980 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
12990 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
129a0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
129b0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
129c0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
129d0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
129e0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
129f0 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
12a00 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Handle);..#endif
12a10 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
12a20 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
12a30 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
12a40 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a70 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
12a80 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
12a90 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
12aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
12ab0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
12ac0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
12ad0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
12ae0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12af0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
12b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12b20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
12b30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12b40 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
12b50 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
12b60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12b70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12b80 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
12b90 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12bc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
12bd0 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
12be0 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b  n(this, handle);
12bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c00 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
12c10 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
12c20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12c30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12c40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
12c50 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
12c60 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
12c70 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
12c80 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
12c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ca0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
12cb0 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65  iveMethods.conne
12cc0 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65  ctionCount);..#e
12cd0 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
12ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12cf0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
12d00 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
12d10 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
12d20 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
12d30 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
12d40 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
12d50 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
12d60 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
12d70 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
12d80 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
12d90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
12da0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
12db0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
12dc0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
12dd0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e00 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
12e10 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
12e20 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
12e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
12e40 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
12e50 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
12e60 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
12e80 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20  andle, e));..   
12e90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12eb0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
12ec0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12ed0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
12ee0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
12ef0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12f00 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
12f10 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
12f20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12f30 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
12f40 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
12f50 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
12f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12f80 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
12f90 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
12fc0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
12fd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12fe0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
12ff0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13000 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
13010 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13020 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
13070 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
13080 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13090 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
130a0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
130b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
130c0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
130d0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
130e0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
130f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
13100 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
13110 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
13120 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
13130 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13180 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
13190 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
131a0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
131b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
131c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
131d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
131e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
131f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13200 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
13210 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13220 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13240 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
13250 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
13260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13270 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13280 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
13290 20 20 20 20 20 20 20 20 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 2f 2f 2f 0d  ///////////////.
132e0 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
132f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
13300 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
13310 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
13320 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
13330 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13340 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
13350 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
13360 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13370 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13380 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
13390 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
133a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
133b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
133c0 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
133d0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
133e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
133f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13430 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
13440 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
13450 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
13460 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
13470 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
13480 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
13490 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a  te statements...
134a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
134b0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
134c0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
134d0 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
134e0 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
134f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13500 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
13510 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
13520 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
13530 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
13540 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
13550 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
135a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
135b0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
135c0 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
135d0 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13620 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13630 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
13640 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
13650 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
13660 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20  Handle stmt)..  
13670 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13680 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d       if (stmt !=
13690 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
136a0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
136b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
136c0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
136d0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74        lock (stmt
136e0 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
136f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
13700 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13710 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13720 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a  n stmt.handle;..
13730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13740 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
13750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
13760 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
13770 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
13780 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
137d0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
137e0 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d  nal SQLiteStatem
137f0 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  entHandle(SQLite
13800 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
13810 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d   cnn, IntPtr stm
13820 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
13830 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
13840 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
13850 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13860 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
13870 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
13880 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13890 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
138a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
138b0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
138c0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
138d0 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20  le(stmt);..     
138e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
138f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
13900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13940 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13950 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
13960 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
13970 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
13980 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
13990 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
139a0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
139b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
139c0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
139d0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
139e0 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
139f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61  ativeMethods.sta
13a00 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23  tementCount);..#
13a10 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
13a20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
13a80 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
13a90 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
13aa0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
13ab0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
13ac0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
13ad0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
13ae0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13af0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
13b00 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
13b10 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
13b20 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b40 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
13b50 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b70 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
13b80 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
13b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ba0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
13bb0 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
13bc0 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  t(cnn, localHand
13bd0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
13be0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
13bf0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
13c00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
13c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13c30 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
13c40 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
13c50 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
13c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c70 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
13c80 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ent: {0}", local
13c90 48 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20  Handle));..     
13ca0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
13cc0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
13cd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13ce0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
13cf0 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
13d00 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
13d10 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
13d20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d40 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
13d50 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
13d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13d80 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
13d90 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65  iteBase.Finalize
13da0 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68  Statement(cnn, h
13db0 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13dd0 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
13de0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
13df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e10 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
13e20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
13e40 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
13e50 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
13e60 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
13e70 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
13e80 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  s.statementCount
13e90 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
13ea0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
13eb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
13ec0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
13ed0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
13ee0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
13ef0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
13f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
13f10 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
13f20 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
13f30 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
13f40 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
13f50 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
13f60 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
13f70 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
13f80 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
13f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fa0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
13fb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13fc0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
13fd0 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
13fe0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
13ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14000 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
14010 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63  tement: {0}, exc
14020 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
14030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14040 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
14050 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
14060 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14070 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
14080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140a0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
140b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
140c0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
140d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
140e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
140f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
14110 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
14120 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14130 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
14150 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
14160 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
14170 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14180 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
14190 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
141a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
141b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
141c0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
141d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
141e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
141f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14230 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
14240 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
14250 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
14260 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
14270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14280 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
14290 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
142a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
142b0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
142c0 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
142d0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  mentCount);..   
142e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
142f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14340 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
14350 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
14360 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
14370 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14380 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
14390 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
143a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
143b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
143c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
143d0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
143e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14400 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
14410 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
14420 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
14430 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14450 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
144b0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
144c0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
144d0 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
144e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
144f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
14510 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
14520 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
14530 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14550 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
14560 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
14570 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14580 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
14590 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
145a0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
14600 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  on SQLiteBackupH
14610 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
14620 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
14630 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
14640 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
14650 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62  SQLite backup ob
14660 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  jects...    inte
14670 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
14680 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  s SQLiteBackupHa
14690 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
146a0 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
146b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
146c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
146d0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
146e0 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
146f0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
14700 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
14710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14760 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14770 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
14780 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
14790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
147d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
147f0 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
14800 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
14810 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b  ntPtr(SQLiteBack
14820 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29  upHandle backup)
14830 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
14840 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63           if (bac
14850 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  kup != null)..  
14860 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
14870 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
14880 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14890 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
148a0 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f   (backup.syncRoo
148b0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
148c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148e0 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70     return backup
148f0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
14900 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14910 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
14920 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
14930 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
14940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14950 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14990 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
149a0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
149b0 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
149c0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
149d0 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
149e0 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  Ptr backup)..   
149f0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
14a00 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
14a10 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
14a20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14a30 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
14a40 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
14a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
14a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14a70 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b   this.cnn = cnn;
14a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14a90 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b    SetHandle(back
14aa0 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  up);..          
14ab0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
14ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14b20 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75  vate SQLiteBacku
14b30 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  pHandle()..     
14b40 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
14b50 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
14b60 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
14b70 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
14b80 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
14b90 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Increment(..   
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
14bb0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
14bc0 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
14bd0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
14be0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14bf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14c40 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
14c50 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
14c60 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
14c70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14c80 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
14c90 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
14ca0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14cb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
14cc0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
14cd0 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
14ce0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
14cf0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
14d00 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
14d10 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
14d20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14d30 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
14d40 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
14d50 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
14d60 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
14d70 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
14d80 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  p(cnn, localHand
14d90 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
14da0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
14db0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
14dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14de0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14df0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
14e00 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
14e10 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
14e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e30 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
14e40 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
14e50 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
14e60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14e70 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
14e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14ea0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
14eb0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
14ec0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
14ed0 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
14ee0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14f00 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
14f10 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
14f20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f40 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
14f50 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
14f60 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  cnn, handle);.. 
14f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f80 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
14f90 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
14fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fb0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14fc0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
14fd0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
14fe0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
14ff0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
15000 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15020 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
15030 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f  Methods.backupCo
15040 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
15050 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
15060 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15070 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
15080 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
15090 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
150a0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
150b0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
150c0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
150d0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
150e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
150f0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
15100 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
15110 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
15120 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
15130 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
15140 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
15150 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
15160 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15180 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
15190 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151b0 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
151c0 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ckup: {0}, excep
151d0 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
151e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151f0 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
15200 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15210 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15220 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
15230 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15250 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
15260 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15270 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
15280 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
15290 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
152a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
152b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
152c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
152d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
152e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
152f0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
15300 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
15310 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
15320 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15330 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
15340 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
15350 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
15360 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
15370 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
15380 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
15390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
153a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153e0 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
153f0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
15400 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
15410 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
15420 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15430 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
15440 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
15450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15460 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
15470 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43  eMethods.backupC
15480 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
15490 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
154a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
154f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
15500 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
15510 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
15520 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
15530 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
15540 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
15550 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15570 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
15580 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
15590 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
155a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155b0 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
155c0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
155d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
155e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
155f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
15600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
15660 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
15670 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
15680 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
15690 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
156a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
156b0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
156c0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
156d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
156e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
156f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15700 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
15710 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
15720 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
15730 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
15740 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..