System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 962bcffbc927a04b3c496f499127a652dca936b0:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c  (TRACE_PRELOAD |
01a0: 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29 0d  | TRACE_HANDLE).
01b0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01c0: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01d0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01e0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01f0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
0200: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
0210: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
0220: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0240: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0250: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0260: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0270: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0280: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0290: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
02a0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02b0: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02c0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02e0: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
02f0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0300: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0310: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
0340: 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53 75  && !DEBUG..  [Su
0350: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
0360: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65  odeSecurity]..#e
0370: 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ndif..  internal
0380: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
0390: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
03a0: 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72  s..  {..      #r
03b0: 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20 48  egion Critical H
03c0: 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44 65  andle Counts (De
03d0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d  bug Build Only).
03e0: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
03f0: 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  E..      //..   
0400: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73     // NOTE: Thes
0410: 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73 65  e counts represe
0420: 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  nt the total num
0430: 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
0440: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ng..      //    
0450: 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64     (non-disposed
0460: 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
0470: 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74 20   derived object 
0480: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
0490: 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74 65   //       create
04a0: 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61 72  d by this librar
04b0: 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61 72  y and are primar
04c0: 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d 0a  ily for use by..
04d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
04e0: 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20 20  he test suite.  
04f0: 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72 65  These counts are
0500: 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79 20   incremented by 
0510: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
0520: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
0530: 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64 20  onstructors and 
0540: 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20  are decremented 
0550: 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  upon the..      
0560: 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73 73  //       success
0570: 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f  ful completion o
0580: 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  f the associated
0590: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a   ReleaseHandle..
05a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d        //       m
05b0: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f  ethods...      /
05c0: 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  /..      interna
05d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6e  l static int con
05e0: 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20  nectionCount;.. 
05f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
0600: 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d 65  atic int stateme
0610: 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  ntCount;..      
0620: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0630: 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b  int backupCount;
0640: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
0650: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0660: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
06b0: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
06c0: 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
06d0: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
06e0: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
06f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0700: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
0710: 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
0720: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
0730: 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
0740: 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
0750: 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
0760: 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
0770: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
0780: 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
0790: 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
07a0: 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
07b0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
07c0: 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
07d0: 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
07e0: 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
07f0: 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
0800: 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
0810: 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
0820: 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
0830: 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
0840: 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
0850: 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
0860: 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
0870: 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
0880: 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
0890: 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
08a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
08b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
08c0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
08d0: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
08e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
08f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
0900: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
0910: 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
0920: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
0930: 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
0940: 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
0950: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
0960: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
0970: 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
0980: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
0990: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
09a0: 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ARY..#if !PLATFO
09b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
09c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ORK..      /// <
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
09e0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
09f0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
0a00: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
0a10: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
0a20: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
0a30: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
0a40: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
0a50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0a60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0a70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0a80: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
0a90: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
0aa0: 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
0ab0: 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
0ac0: 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65 6e  HITECTURE";..#en
0ad0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0b30: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0b40: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44  eadonly string D
0b50: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
0b60: 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20  = ".dll";....   
0b70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0bc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0bd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0be0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
0bf0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
0c00: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
0c10: 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79  in32 LoadLibrary
0c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
0c30: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
0c40: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
0c50: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
0c60: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
0c70: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
0c80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0ca0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
0cb0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
0cc0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
0cd0: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
0ce0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
0cf0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
0d00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
0d10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
0d20: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
0d30: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
0d40: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
0d50: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
0d60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
0d70: 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ns>..#if !PLATFO
0d80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0d90: 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ORK..      [DllI
0da0: 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22  mport("kernel32"
0db0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
0dc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
0dd0: 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  dll",..#endif.. 
0de0: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
0df0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
0e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
0e10: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
0e20: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
0e30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0e40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0e50: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
0e60: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
0e70: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
0e80: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
0e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
0ea0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
0eb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
0ec0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
0ed0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
0ee0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
0ef0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
0f00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f50: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
0f60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0f90: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
0fa0: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
0fb0: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
0fc0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
0fd0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
0fe0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
0ff0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
1000: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
1010: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
1020: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
1030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1050: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1060: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
1070: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
1080: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
1090: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
10a0: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
10b0: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
10c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10d0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
10e0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
10f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1110: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
1120: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1130: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
1140: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
1150: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
1160: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
1170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
11c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
11e0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
11f0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
1200: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
1210: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
1220: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
1230: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
1240: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
1250: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
1260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1270: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1280: 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f  te enum Processo
1290: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20  rArchitecture : 
12a0: 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54  ushort /* COMPAT
12b0: 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20  : Win32. */..   
12c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12d0: 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20  Intel = 0,..    
12e0: 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d        MIPS = 1,.
12f0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
1300: 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 2,..         
1310: 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20   PowerPC = 3,.. 
1320: 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34           SHx = 4
1330: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d  ,..          ARM
1340: 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 5,..         
1350: 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20   IA64 = 6,..    
1360: 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20        Alpha64 = 
1370: 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53  7,..          MS
1380: 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20  IL = 8,..       
1390: 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20     AMD64 = 9,.. 
13a0: 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e           IA32_on
13b0: 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20  _Win64 = 10,..  
13c0: 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20          Unknown 
13d0: 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20  = 0xFFFF..      
13e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1430: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1440: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1450: 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74   /// This struct
1460: 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ure contains inf
1470: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
1480: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75  he current compu
1490: 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20  ter. This..     
14a0: 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68   /// includes th
14b0: 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65  e processor type
14c0: 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d  , page size, mem
14d0: 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65  ory addresses, e
14e0: 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tc...      /// <
14f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1500: 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1510: 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1520: 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72  tial)]..      pr
1530: 69 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53  ivate struct SYS
1540: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
1550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
1560: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
1570: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
1580: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1590: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
15a0: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
15b0: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
15c0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
15d0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
15e0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
15f0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1600: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1610: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
1620: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
1630: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
1640: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1650: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
1660: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
1670: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1690: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
16a0: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
16b0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
16c0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16d0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
16e0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
16f0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
1700: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
1710: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
1720: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1730: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1740: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
1750: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
1760: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
1770: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
1780: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
1790: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
17a0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
17b0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
17c0: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
17d0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
17e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
17f0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
1800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1850: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1860: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
1870: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
1880: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
1890: 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 61   _SQLiteModule a
18a0: 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nd..      /// pr
18b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18c0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
18d0: 6c 64 73 2c 20 62 65 6c 6f 77 2e 0d 0a 20 20 20  lds, below...   
18e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1900: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1910: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
1920: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1930: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1990: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19a0: 20 20 20 20 20 20 2f 2f 2f 20 53 74 6f 72 65 73        /// Stores
19b0: 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65   the mappings be
19c0: 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20  tween processor 
19d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
19e0: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 0d  es and platform.
19f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73  .      /// names
1a00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1a10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1a20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69  rivate static Di
1a30: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1a40: 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73   string> process
1a50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1a60: 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20  atforms;....    
1a70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1ac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1ae0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
1af0: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
1b00: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
1b10: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
1b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
1b30: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
1b40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b50: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1b60: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
1b70: 74 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74  teModule = IntPt
1b80: 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1b90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1bf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e  .      /// For n
1c00: 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ow, this method 
1c10: 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65  simply calls the
1c20: 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68   Initialize meth
1c30: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
1c40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c50: 20 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61   static UnsafeNa
1c60: 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20  tiveMethods().. 
1c70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c80: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d    Initialize();.
1c90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1ca0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1cf0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
1d10: 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69  mpts to initiali
1d20: 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79  ze this class by
1d30: 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65   pre-loading the
1d40: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
1d50: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
1d60: 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  y for the proces
1d70: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1d80: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1d90: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
1da0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1db0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1dc0: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
1dd0: 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b  alize()..      {
1de0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1e10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1e20: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72  E: If the "No_Pr
1e30: 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76  eLoadSQLite" env
1e40: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
1e50: 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20  e is set (to..  
1e60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1e70: 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70   anything), skip
1e80: 20 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c   all our special
1e90: 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79   code and simply
1ea0: 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20   return...      
1eb0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1ec0: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
1ed0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
1ee0: 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 50 72 65  Variable("No_Pre
1ef0: 4c 6f 61 64 53 51 4c 69 74 65 22 29 20 21 3d 20  LoadSQLite") != 
1f00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1f10: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
1f20: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1f30: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1f40: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1f70: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
1f80: 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69  ake sure this li
1f90: 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66  st is updated if
1fa0: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a   the supported..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1fd0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1fe0: 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66  mes and/or platf
1ff0: 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  orm names..     
2000: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2010: 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20    changes...    
2020: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2030: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2040: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2050: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
2060: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2070: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
20b0: 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f  e the map of pro
20c0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
20d0: 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  ure names..     
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
20f0: 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72        to platfor
2100: 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20  m names using a 
2110: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
2120: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
2130: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2140: 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20      comparer... 
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2170: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2180: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2190: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
21b0: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
21c0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a  ring, string>(..
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
21f0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
2200: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a  IgnoreCase);....
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2230: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2240: 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20   Setup the list 
2250: 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  of platform name
2260: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2270: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2280: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2290: 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63  e supported proc
22a0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
22b0: 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  res...          
22c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
22e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
22f0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
2300: 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29  ("x86", "Win32")
2310: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2320: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
2330: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
2340: 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c  rms.Add("AMD64",
2350: 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20   "x64");..      
2360: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
2370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2380: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
2390: 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22  IA64", "Itanium"
23a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23b0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
23c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
23d0: 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20  orms.Add("ARM", 
23e0: 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20  "WinCE");..     
23f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2420: 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62   BUGBUG: What ab
2430: 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63  out other applic
2440: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a  ation domains?..
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2470: 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  if (_SQLiteModul
2480: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2490: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24a0: 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64 75       _SQLiteModu
24b0: 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c 69  le = PreLoadSQLi
24c0: 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c 6c  teDll(null, null
24d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
24e0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
24f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2540: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
2560: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2570: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
2580: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
2590: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
25a0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
25b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
25c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
25d0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25e0: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
25f0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
2600: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
2610: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
2620: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
2630: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2640: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
2650: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2660: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2670: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2680: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
2690: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  y()..      {..#i
26a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
26e0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
26f0: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
2700: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
2710: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
2720: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
2730: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
2740: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
2750: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
2760: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2770: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
2780: 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e  ectory = Environ
2790: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
27a0: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
27c0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
27d0: 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20  irectory");.... 
27e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
27f0: 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
2800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2810: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
2820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
2840: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
2850: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
2860: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
2870: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
2880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2890: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
28a0: 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
28b0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
28c0: 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  he directory..  
28d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
28f0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
2900: 69 6e 67 20 61 73 73 65 6d 62 6c 79 20 28 69 2e  ing assembly (i.
2910: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
2920: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
2930: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
2940: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
2950: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62 61 73  ation domain bas
2960: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
2970: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e        directory.
2980: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
29a0: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
29b0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
29c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29d0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
29e0: 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
29f0: 65 63 74 6f 72 79 22 29 20 21 3d 20 6e 75 6c 6c  ectory") != null
2a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a40: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
2a50: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2a60: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
2a70: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a90: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
2aa0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2ab0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad0: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
2ae0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
2af0: 61 6d 65 28 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  ame(assembly.Loc
2b00: 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ation);....     
2b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b20: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
2b30: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
2b40: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b60: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
2b70: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
2b80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ba0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
2be0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2c00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
2c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
2c20: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
2c30: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
2c40: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
2c50: 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
2c60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
2c70: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
2c80: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
2c90: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ca0: 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
2cb0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
2cc0: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
2cd0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ce0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
2cf0: 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
2d00: 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
2d10: 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
2d20: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
2d30: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
2d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d50: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2d60: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
2d70: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
2d80: 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
2d90: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2da0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61    if (assemblyNa
2db0: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
2dc0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2dd0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2de0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e00: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
2e10: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
2e20: 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  e(assemblyName.C
2e30: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
2e40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e50: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2e60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e70: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
2e80: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  g...          }.
2e90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
2ea0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69  urn null;..#endi
2eb0: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
2ec0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2f10: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f20: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
2f30: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
2f40: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
2f50: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
2f60: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
2f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
2f80: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
2f90: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
2fa0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2fb0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2fc0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
2fd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
2fe0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
2ff0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
3000: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
3010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3020: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3030: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3040: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
3050: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
3060: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
3070: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
3080: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
3090: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
30a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
30b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
30c0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
30d0: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
30e0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
30f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
3100: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
3110: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3120: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
3130: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
3140: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3160: 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61    PlatformID pla
3170: 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f  tformId = Enviro
3180: 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e  nment.OSVersion.
3190: 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20  Platform;....   
31a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31b0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
31c0: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29  atformID.Win32S)
31d0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
31e0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
31f0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
3200: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
3210: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
3220: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
3230: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
3240: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3260: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
3270: 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d  tformID.WinCE)).
3280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a0: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
32b0: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
32c0: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
32f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
3300: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3330: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3340: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
3350: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3380: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
33a0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
33b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3420: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
3430: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3440: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
3450: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
3460: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
3470: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
3480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3490: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
34a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
34b0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
34c0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
34d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
34e0: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
34f0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
3500: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
3510: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
3520: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3530: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3540: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
3550: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3560: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
3570: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3580: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3590: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
35b0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
35c0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
35d0: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
35e0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
35f0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
3600: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
3610: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
3620: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3630: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
3640: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
3650: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
3660: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3670: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
3680: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
3690: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
36a0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
36b0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
36c0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
36d0: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
36e0: 74 65 63 74 75 72 65 22 29 3b 0d 0a 0d 0a 20 20  tecture");....  
36f0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3700: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3710: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
3720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3730: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
3740: 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
3750: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3760: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
3770: 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
3780: 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
3790: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
37a0: 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
37b0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
37c0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50  onmentVariable(P
37d0: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
37e0: 43 54 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a  CTURE);..#else..
37f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3800: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3810: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
3820: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
3830: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
3840: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
3850: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
3860: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
3870: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
3880: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
3890: 20 75 73 20 77 69 74 68 0d 0a 20 20 20 20 20 20   us with..      
38a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
38b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
38c0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
38d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
38e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
38f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3900: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3910: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
3920: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
3930: 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
3940: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 6c  ction will be pl
3950: 61 63 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  aced..          
3960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72      //       her
3970: 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f  e.  Only the pro
3980: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3990: 75 72 65 20 66 69 65 6c 64 20 69 73 20 75 73 65  ure field is use
39a0: 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 20 20  d by..          
39b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
39c0: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
39d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
39e0: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45             SYSTE
39f0: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
3a00: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
3a10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3a20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
3a30: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
3a40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
3a50: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 20 66  P/Invoke, thus f
3a60: 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  illing..        
3a70: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
3a80: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
3ab0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
3ac0: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
3ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3af0: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
3b00: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
3b10: 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
3b20: 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b50: 72 65 74 75 72 6e 20 73 79 73 74 65 6d 49 6e 66  return systemInf
3b60: 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
3b70: 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
3b80: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
3b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
3ba0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3bc0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
3bd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3be0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3bf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
3c00: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74  pon failure, ret
3c10: 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72  urn an empty str
3c20: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3c30: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
3c40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
3c50: 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  y;..#endif..    
3c60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3cc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3cd0: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
3ce0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3cf0: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
3d00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
3d10: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
3d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3d40: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
3d50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
3d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
3d70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3d80: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
3d90: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
3da0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
3db0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3de0: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
3df0: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
3e00: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
3e10: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
3e20: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
3e30: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
3e40: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
3e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3e60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3e70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
3e80: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
3e90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
3ea0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
3eb0: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  tecture..       
3ec0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
3ed0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
3ee0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
3ef0: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
3f00: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
3f10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3f20: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
3f30: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3f40: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3f60: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3f70: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
3f80: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
3f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fa0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3fc0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
3fd0: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
3fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
4000: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
4010: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4030: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4040: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
4050: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
4060: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4080: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
4090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
40a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
40b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
40c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
40d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4130: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4140: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
4150: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
4160: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
4170: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
4180: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
4190: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
41a0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
41b0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
41c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
41d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
41e0: 20 6e 61 6d 65 3d 22 64 69 72 65 63 74 6f 72 79   name="directory
41f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
4200: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4210: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
4220: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
4230: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
4240: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
4250: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
4260: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
4270: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
4280: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
4290: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
42a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
42b0: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
42c0: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
42d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
42e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
42f0: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
4300: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
4310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
4320: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
4330: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
4340: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
4350: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
4360: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
4370: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
4380: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
4390: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
43a0: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
43b0: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
43c0: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
43d0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
43e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
43f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
4400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
4420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
4430: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
4440: 4c 69 62 72 61 72 79 20 2d 4f 52 2d 20 49 6e 74  Library -OR- Int
4450: 50 74 72 2e 5a 65 72 6f 0d 0a 20 20 20 20 20 20  Ptr.Zero..      
4460: 2f 2f 2f 20 69 66 20 74 68 65 20 6c 6f 61 64 69  /// if the loadi
4470: 6e 67 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79  ng fails for any
4480: 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20   reason...      
4490: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
44a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
44b0: 61 74 69 63 20 49 6e 74 50 74 72 20 50 72 65 4c  atic IntPtr PreL
44c0: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
44d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
44e0: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
44f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
4500: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4510: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
4520: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4530: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4540: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
4550: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
4560: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
4570: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
4580: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ult...          
4590: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
45a0: 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e   (directory == n
45b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
45c0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
45d0: 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
45e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
45f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
4600: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
4610: 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
4620: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4630: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
4640: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4650: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
4660: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
4670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4680: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
4690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
46a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
46b0: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
46c0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
46d0: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
46e0: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
46f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4700: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
4710: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
4720: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
4730: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
4740: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
4750: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
4760: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
4770: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c        SQLITE_DLL
4780: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
4790: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
47a0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
47b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
47c0: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
47d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
47e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
47f0: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
4800: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
4810: 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
4820: 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
4830: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4840: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
4850: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4860: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
4870: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
4880: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
4890: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
48a0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
48b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
48c0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
48d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
48e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
48f0: 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
4900: 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
4910: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
4920: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
4930: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4940: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
4950: 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
4960: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4970: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
4980: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
4990: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
49a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
49b0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
49c0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
49d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
49e0: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
49f0: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
4a00: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
4a10: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
4a20: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
4a30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
4a40: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
4a50: 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e  llFileName(Path.
4a60: 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d  Combine(Path.Com
4a70: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d  bine(directory,.
4a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
4a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4aa0: 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  ture), SQLITE_DL
4ab0: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
4ac0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4ad0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
4ae0: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
4af0: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
4b00: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
4b10: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
4b20: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
4b30: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
4b40: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
4b50: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
4b60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4b70: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
4b80: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
4b90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4ba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4bb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4bc0: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
4bd0: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
4be0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4bf0: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
4c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4c10: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4c40: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
4c50: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
4c60: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
4c70: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4c90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4ca0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
4cb0: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
4cc0: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
4cd0: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
4ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4cf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4d00: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
4d10: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4d30: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
4d40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
4d50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4d60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
4d70: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
4d80: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
4d90: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
4da0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
4db0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
4dc0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
4dd0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
4de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4df0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4e00: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
4e10: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
4e20: 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43  h.Combine(Path.C
4e30: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
4e40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4e50: 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 4e 61 6d       platformNam
4e60: 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29  e), SQLITE_DLL))
4e70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4e80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4e90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
4ea0: 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
4eb0: 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
4ec0: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
4ed0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4ee0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
4ef0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
4f00: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
4f30: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
4f40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4f50: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
4f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4f80: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
4f90: 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
4fa0: 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
4fb0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4fd0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
4fe0: 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
4ff0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 23             //..#
5000: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5010: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
5020: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
5030: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
5040: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
5050: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5060: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
5070: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c      "Trying to l
50a0: 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74  oad native SQLit
50b0: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
50c0: 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  "...",..        
50d0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
50e0: 6d 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  me));..#endif...
50f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5100: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5110: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
5120: 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
5130: 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
5140: 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
5150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5160: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
5170: 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
5180: 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
5190: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
51a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51b0: 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
51c0: 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d  w an exception..
51d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
51e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
51f0: 20 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72   return LoadLibr
5200: 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
5210: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
5220: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
5230: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
5240: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
5250: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
5260: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
5270: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
5280: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
5290: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
52a0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
52b0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
52c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
52d0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
52e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
52f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5310: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
5320: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
5330: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5360: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
5370: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
5380: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
5390: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
53a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68  // NOTE: Show wh
53d0: 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f  ere we failed to
53e0: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
53f0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
5400: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5410: 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d      library from
5420: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
5430: 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65  Win32 error code
5440: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
5450: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5460: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72   exception infor
5470: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
5480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
54b0: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
54c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
54d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
54e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
54f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
5500: 20 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65            "Faile
5510: 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
5520: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
5530: 5c 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20  \"{0}\" " +..   
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f     "(getLastErro
5560: 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
5570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5580: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
5590: 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
55a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
55b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
55d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
55e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
55f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
5600: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
5610: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
5620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5630: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5640: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
5650: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
5660: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
5670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
56d0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
56e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
56f0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
5700: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
5710: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
5720: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
5730: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
5740: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
5750: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
5760: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
5770: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
5780: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
5790: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
57a0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
57b0: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
57c0: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
57d0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
57e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
57f0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
5800: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
5810: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
5820: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
5830: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
5840: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
5850: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
5860: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
5870: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
5880: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
5890: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
58a0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
58b0: 65 72 6f 70 2e 30 38 37 2e 64 6c 6c 22 3b 0d 0a  erop.087.dll";..
58c0: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
58d0: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
58e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
58f0: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
5900: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
5910: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
5920: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
5930: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
5940: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
5950: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
5960: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
5970: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
5980: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
5990: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
59a0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
59b0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
59c0: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
59d0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
59e0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
59f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
5a00: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
5a10: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
5a20: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
5a30: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
5a40: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
5a50: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
5a60: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
5a70: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
5a80: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
5a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
5aa0: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
5ab0: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
5ac0: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
5ad0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
5ae0: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
5af0: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
5b00: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
5b10: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
5b20: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
5b30: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
5b40: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
5b50: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
5b60: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
5b70: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
5b80: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
5b90: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
5ba0: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
5bb0: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
5bc0: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
5bd0: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
5be0: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
5bf0: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
5c00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
5c10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5c20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5c40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5c50: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
5c60: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
5c70: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5c80: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5c90: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5ca0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5cb0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5cc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5cd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5ce0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
5cf0: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
5d00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5d10: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5d20: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5d30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5d40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5d50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5d60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5d70: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
5d80: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
5d90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
5da0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
5db0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
5dc0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5dd0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
5de0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5df0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5e00: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
5e10: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
5e20: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
5e30: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
5e40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5e80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
5e90: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
5ea0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
5eb0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
5ec0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
5ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5ee0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5ef0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5f00: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5f10: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
5f20: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5f30: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5f40: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5f60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5f70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5f80: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5f90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
5fa0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
5fb0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5fc0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5fd0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5fe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5ff0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6000: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6010: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6020: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
6030: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
6040: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
6050: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
6060: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6070: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6080: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6090: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
60a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
60b0: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
60c0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
60d0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
60e0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
60f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6100: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6110: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6120: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6130: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
6140: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
6150: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6160: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6170: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
6190: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
61a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
61b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
61c0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
61d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
61e0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
61f0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
6200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6210: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6230: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6240: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6250: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
6260: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6270: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6280: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6290: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
62a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
62b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
62c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
62d0: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
62e0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
62f0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
6300: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
6310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6320: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6330: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6340: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6350: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
6360: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74  p(IntPtr db, out
6370: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
6380: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6390: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
63a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
63b0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
63c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
63d0: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
63e0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
63f0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
6400: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
6410: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
6420: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
6430: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
6440: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6450: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6460: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6470: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6480: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
6490: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
64a0: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
64b0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
64c0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
64d0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
64e0: 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Name, out IntPtr
64f0: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75   ptrDataType, ou
6500: 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  t IntPtr ptrColl
6510: 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74  Seq, out int not
6520: 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72  Null, out int pr
6530: 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e  imaryKey, out in
6540: 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69  t autoInc, out i
6550: 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e  nt dtLen, out in
6560: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
6570: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6580: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6590: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
65a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
65b0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
65c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
65d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
65e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
65f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6620: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
6630: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
6640: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
6650: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  len);....#if INT
6660: 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44  EROP_LOG..    [D
6670: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6680: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6690: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
66a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
66b0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
66c0: 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d  _log_interop();.
66d0: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
66e0: 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
66f0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
6700: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
6710: 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
6720: 20 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75   add existing fu
6730: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74  nctionality on t
6740: 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  op of SQLite and
6750: 20 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c   require a littl
6760: 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20  e effort to..   
6770: 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20   // get working 
6780: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  when using the s
6790: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c  tandard SQLite l
67a0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65  ibrary...    #re
67b0: 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64  gion interop add
67c0: 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ed functionality
67d0: 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
67e0: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
67f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6800: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6810: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6820: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6830: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
6840: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
6850: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
6860: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6870: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6880: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6890: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
68a0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
68b0: 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70  function_interop
68c0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
68d0: 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
68e0: 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
68f0: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
6900: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
6910: 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
6920: 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
6930: 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
6940: 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64  ffinal, int need
6950: 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20  CollSeq);....   
6960: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6970: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6980: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6990: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
69a0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e  Code sqlite3_fin
69b0: 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e  alize_interop(In
69c0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
69d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
69e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
69f0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6a00: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6a10: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
6a20: 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74  ackup_finish_int
6a30: 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b  erop(IntPtr back
6a40: 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  up);....    [Dll
6a50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6a60: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6a70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6a80: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6a90: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74  sqlite3_open_int
6aa0: 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
6ab0: 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65  Filename, SQLite
6ac0: 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
6ad0: 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ags, out IntPtr 
6ae0: 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
6af0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6b00: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
6b10: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6b20: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6b30: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69  sqlite3_open16_i
6b40: 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74  nterop(byte[] ut
6b50: 66 38 46 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69  f8Filename, SQLi
6b60: 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
6b70: 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74  flags, out IntPt
6b80: 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
6b90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6ba0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6bb0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6bc0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
6bd0: 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  e sqlite3_reset_
6be0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
6bf0: 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
6c00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6c10: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6c20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6c30: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
6c40: 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nges_interop(Int
6c50: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
6c60: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
6c70: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
6c80: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
6c90: 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61  / The standard a
6ca0: 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65  pi call equivale
6cb0: 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65  nts of the above
6cc0: 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a   interop calls..
6cd0: 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e      #region stan
6ce0: 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66  dard versions of
6cf0: 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f   interop functio
6d00: 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  ns....#if SQLITE
6d10: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
6d20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6d30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6d40: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6d50: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6d60: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6d70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6d80: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6d90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6da0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6db0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6dc0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
6dd0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
6de0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50  lite3_close(IntP
6df0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
6e00: 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43  INTEROP_LEGACY_C
6e10: 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  LOSE..#if !PLATF
6e20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
6e30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
6e40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
6e50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6e60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
6e70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
6e80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
6e90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6ea0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
6eb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6ec0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6ed0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
6ee0: 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64  lose_v2(IntPtr d
6ef0: 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a  b); /* 3.7.14+ *
6f00: 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  /..#endif....#if
6f10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6f20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6f30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6f40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6f50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6f60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6f70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6f80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6f90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6fa0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6fb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
6fc0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
6fd0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
6fe0: 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
6ff0: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
7000: 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
7010: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
7020: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
7030: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
7040: 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
7050: 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
7060: 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
7070: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7080: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7090: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
70a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
70b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
70c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
70d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
70e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
70f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7100: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7110: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7120: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
7130: 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
7140: 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ze(IntPtr stmt);
7150: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7160: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7170: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7180: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7190: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
71a0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
71b0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
71c0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
71d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
71e0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
71f0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7200: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
7210: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
7220: 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74  kup_finish(IntPt
7230: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
7240: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7250: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7260: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7270: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7280: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7290: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
72a0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
72b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
72c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
72d0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
72e0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
72f0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
7300: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
7310: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
7320: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7330: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7340: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7350: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7360: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7370: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7380: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7390: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
73a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
73b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
73c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
73d0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
73e0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
73f0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
7400: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7410: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7420: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7430: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7440: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7450: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7460: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7470: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7480: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7490: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
74a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
74b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
74c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
74d0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
74e0: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
74f0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
7500: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7510: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7520: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7530: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7540: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7550: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7560: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7570: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7580: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7590: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
75a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
75b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
75c0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
75d0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
75e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
75f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7600: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7610: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7620: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7630: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7640: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7650: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7660: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7670: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7680: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7690: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
76a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
76b0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
76c0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
76d0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
76e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
76f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7700: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7710: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7720: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7730: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7740: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7750: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7760: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7770: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7780: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7790: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
77a0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
77b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
77c0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
77d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
77e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
77f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7800: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7810: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7820: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7830: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7850: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7860: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7870: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7880: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7890: 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
78a0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
78b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
78c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
78d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
78e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
78f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7900: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7910: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7920: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7930: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7940: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7950: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7960: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7970: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
7980: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7990: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
79a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
79b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
79c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
79d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
79e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
79f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7a00: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7a10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7a20: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7a30: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7a40: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7a50: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
7a60: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
7a70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
7a80: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
7a90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7aa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7ab0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7ac0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7ad0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7ae0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7af0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7b00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7b10: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7b20: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7b30: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
7b40: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
7b50: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
7b60: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7b70: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7b80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7b90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7ba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7bb0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7bc0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7bd0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7be0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7bf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7c00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7c10: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7c20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7c30: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
7c40: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
7c50: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7c60: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
7c70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7c80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7c90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7ca0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7cb0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7cc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7cd0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7ce0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7cf0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7d00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7d10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7d20: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7d30: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
7d40: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7d50: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
7d60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7d70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7d80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7d90: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7da0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7db0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7dc0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7dd0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7de0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7e00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7e10: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7e20: 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
7e30: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7e40: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7e50: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7e60: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7e70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7e80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7e90: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7ea0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7eb0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7ec0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7ed0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7ee0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7ef0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7f00: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
7f10: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
7f20: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7f30: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7f40: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7f60: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7f70: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7f80: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7f90: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7fa0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7fb0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7fc0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7fd0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7fe0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
7ff0: 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
8000: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8010: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8020: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8030: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8040: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8050: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8060: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8070: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8080: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8090: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
80a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
80b0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
80c0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
80d0: 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20  pare(IntPtr db, 
80e0: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
80f0: 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74   nBytes, out Int
8100: 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e  Ptr stmt, out In
8110: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
8120: 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50  ....#if USE_PREP
8130: 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41  ARE_V2..#if !PLA
8140: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8150: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8160: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8170: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8180: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8190: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
81a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
81b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
81c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
81d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
81e0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
81f0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8200: 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50  _prepare_v2(IntP
8210: 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
8220: 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
8230: 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  out IntPtr stmt,
8240: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52   out IntPtr ptrR
8250: 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  emain);..#endif.
8260: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8270: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8280: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8290: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
82a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
82b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
82c0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
82d0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
82e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
82f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8300: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8310: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
8320: 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
8330: 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
8340: 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
8350: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
8360: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
8370: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20  [] colName, out 
8380: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
8390: 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70  pe, out IntPtr p
83a0: 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69  trCollSeq, out i
83b0: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20  nt notNull, out 
83c0: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
83d0: 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  out int autoInc)
83e0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
83f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8400: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8410: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8420: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8430: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8440: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8450: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8470: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8480: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8490: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
84a0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
84b0: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
84c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
84d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
84e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
84f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8500: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8510: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8520: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8530: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8540: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8550: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8560: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8570: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
8580: 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
8590: 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
85a0: 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53  .    // SQLITE_S
85b0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
85c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
85d0: 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
85e0: 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
85f0: 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
8600: 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
8610: 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
8620: 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
8630: 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
8640: 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
8650: 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
8660: 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
8670: 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
8680: 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
8690: 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
86a0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
86b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
86c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
86d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
86e0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
86f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
8700: 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
8710: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
8720: 20 6f 75 74 20 69 6e 74 20 74 79 70 65 2c 20 6f   out int type, o
8730: 75 74 20 69 6e 74 20 65 6e 63 2c 20 6f 75 74 20  ut int enc, out 
8740: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
8750: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8760: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8770: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8780: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8790: 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
87a0: 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
87b0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
87c0: 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
87d0: 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
87e0: 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
87f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8800: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8810: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8820: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8830: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
8840: 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
8850: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
8860: 6e 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20 6c  nt cursor, out l
8870: 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
8880: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8890: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
88a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
88b0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
88c0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
88d0: 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
88e0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
88f0: 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
8900: 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
8910: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
8920: 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e 74  umnName, out int
8930: 20 73 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74 20   sortOrder, out 
8940: 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75 74  int onError, out
8950: 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
8960: 6e 2c 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c 6c  n, out int colll
8970: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
8980: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8990: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
89a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
89b0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
89c0: 65 74 61 6c 6c 5f 69 6e 74 65 72 6f 70 28 49 6e  etall_interop(In
89d0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
89e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
89f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8a00: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8a10: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8a20: 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e  _table_cursor_in
8a30: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
8a40: 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74  t, int db, int t
8a50: 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a  ableRootPage);..
8a60: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
8a70: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
8a80: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8a90: 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61  ...    // Standa
8aa0: 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f  rd API calls glo
8ab0: 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69  bal across versi
8ac0: 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20  ons.  There are 
8ad0: 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20  a few instances 
8ae0: 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  of interop calls
8af0: 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72  ..    // scatter
8b00: 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20  ed in here, but 
8b10: 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63  they are only ac
8b20: 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f  tive when PLATFO
8b30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8b40: 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e  ORK is declared.
8b50: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
8b60: 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61 70  andard sqlite ap
8b70: 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21 50 4c  i calls..#if !PL
8b80: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8b90: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8ba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8bb0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8bc0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8bd0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8be0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8bf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8c00: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8c10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8c20: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8c30: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8c40: 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
8c50: 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
8c60: 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74    IntPtr db, int
8c70: 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
8c80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8c90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8ca0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8cb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8cc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8cd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8ce0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8cf0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8d00: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8d10: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8d20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8d30: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8d40: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
8d50: 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
8d60: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
8d70: 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b   fileName, byte[
8d80: 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20  ] procName, ref 
8d90: 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d  IntPtr pError);.
8da0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8db0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8dc0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8dd0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8de0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8df0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8e00: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
8e10: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
8e20: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
8e30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8e40: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
8e50: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
8e60: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
8e70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8e80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8e90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8ea0: 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
8eb0: 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
8ec0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
8ed0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8ee0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8ef0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8f00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8f10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8f20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8f30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8f40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8f50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8f60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8f70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8f80: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
8f90: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
8fa0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8fb0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8fc0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8fd0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8fe0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8ff0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9000: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9010: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9020: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9030: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9040: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9050: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
9060: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
9070: 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
9080: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9090: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
90a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
90b0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
90c0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
90d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
90e0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
90f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9100: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
9110: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9120: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
9130: 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
9140: 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
9150: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9160: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9170: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9180: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9190: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
91a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
91b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
91c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
91d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
91e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
91f0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
9200: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69  sqlite3_malloc(i
9210: 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
9220: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9230: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9240: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9250: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9260: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9270: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9280: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9290: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
92a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
92b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
92c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
92d0: 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  r sqlite3_reallo
92e0: 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20  c(IntPtr p, int 
92f0: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
9300: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9310: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9320: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9330: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9340: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9350: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9360: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9370: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9380: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9390: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
93a0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
93b0: 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72  ite3_free(IntPtr
93c0: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
93d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
93e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
93f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9400: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9410: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9420: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9430: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9440: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9450: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9460: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9470: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9480: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9490: 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20  _open_v2(byte[] 
94a0: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75  utf8Filename, ou
94b0: 74 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  t IntPtr db, SQL
94c0: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
94d0: 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76   flags, IntPtr v
94e0: 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  fs);....#if !PLA
94f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9500: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9510: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9520: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9530: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9540: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
9550: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
9560: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
9570: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9580: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9590: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
95a0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
95b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
95c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
95d0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
95e0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74  qlite3_open16(st
95f0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 6f  ring fileName, o
9600: 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ut IntPtr db);..
9610: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9620: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9630: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9640: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9650: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9660: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9670: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9680: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9690: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
96a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
96b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
96c0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
96d0: 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
96e0: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
96f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9700: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9710: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9720: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9730: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9740: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9750: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9760: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
9770: 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
9780: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
9790: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6c 73 65 0d  Ptr db);..#else.
97a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
97b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
97c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
97d0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
97e0: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
97f0: 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
9800: 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
9810: 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 23 65 6e  ong rowId);..#en
9820: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
9830: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9840: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9860: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9870: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9880: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9890: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
98a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
98b0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
98c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
98d0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
98e0: 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
98f0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
9900: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9910: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9920: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9930: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9940: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9950: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9960: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
9970: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9980: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
9990: 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6c  ory_used();..#el
99a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
99b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
99c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
99d0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
99e0: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
99f0: 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
9a00: 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23   long bytes);..#
9a10: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
9a20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9a30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9a40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9a50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9a60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9a70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9a80: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9a90: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
9aa0: 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
9ab0: 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20  y_highwater(int 
9ac0: 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6c  resetFlag);..#el
9ad0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9ae0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9af0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9b00: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
9b10: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
9b20: 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
9b30: 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
9b40: 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
9b50: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
9b60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9b70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9b80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9b90: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9ba0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9bb0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9bc0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9bd0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9be0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9bf0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9c00: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9c10: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9c20: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
9c30: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9c40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9c50: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9c60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9c70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9c80: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9c90: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9ca0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9cb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9cc0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9cd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9ce0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9cf0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75  rCode sqlite3_bu
9d00: 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74  sy_timeout(IntPt
9d10: 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a  r db, int ms);..
9d20: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9d30: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9d40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9d50: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9d60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9d70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9d80: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9d90: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9da0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9db0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9dc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9dd0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
9de0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
9df0: 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
9e00: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74  , int index, Byt
9e10: 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
9e20: 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72  Size, IntPtr nTr
9e30: 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66  ansient);....#if
9e40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9e50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9e60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9e70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9e80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9e90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9ea0: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
9eb0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9ec0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9ed0: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
9ee0: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
9ef0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f  t, int index, do
9f00: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
9f10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9f20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9f30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9f40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9f50: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9f60: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9f70: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9f80: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
9f90: 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
9fa0: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
9fb0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9fc0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9fd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9fe0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9ff0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a000: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a010: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a020: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a030: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
a040: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
a050: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a060: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
a070: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
a080: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a090: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
a0a0: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ue);....    //..
a0b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
a0c0: 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
a0d0: 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
a0e0: 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c  d_int"; however,
a0f0: 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
a100: 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
a110: 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
a120: 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
a130: 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65   (32-bit) intege
a140: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
a150: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a160: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a170: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a180: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
a190: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
a1a0: 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43  d_int", CallingC
a1b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a1c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a1d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a1e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a1f0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
a200: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
a210: 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64  ind_int")]..#end
a220: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a230: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
a240: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
a250: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
a260: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a270: 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61  t index, uint va
a280: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
a290: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a2a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a2b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a2c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a2d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a2e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a2f0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
a300: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a310: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a320: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
a330: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a340: 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
a350: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
a360: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a370: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
a380: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a390: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
a3a0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
a3b0: 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
a3c0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a3d0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
a3e0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
a3f0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
a400: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
a410: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
a420: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
a430: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
a440: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
a450: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
a460: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
a470: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
a480: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
a490: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
a4a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a4b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a4c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a4d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
a4e0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
a4f0: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
a500: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a510: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a520: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
a530: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a540: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a550: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a560: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
a570: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a580: 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
a590: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
a5a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a5b0: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
a5c0: 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
a5d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d  int64_interop")]
a5e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a5f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
a600: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
a610: 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
a620: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
a630: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
a640: 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65   ref ulong value
a650: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
a660: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a670: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a680: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a690: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a6a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a6b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a6c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a6d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a6e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a6f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a700: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
a710: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
a720: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
a730: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
a740: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
a750: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a760: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a770: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a780: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a790: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a7a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a7b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a7c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a7d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a7e0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a7f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a800: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a810: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
a820: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
a830: 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76   index, byte[] v
a840: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
a850: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
a860: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
a870: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a880: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a890: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a8a0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a8b0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a8c0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a8d0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a8e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a8f0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a900: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a910: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
a920: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
a930: 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  er_count(IntPtr 
a940: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
a950: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a960: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a970: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a980: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a990: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a9a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a9b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a9c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a9d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a9e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a9f0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
aa00: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
aa10: 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50  meter_index(IntP
aa20: 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20  tr stmt, byte[] 
aa30: 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  strName);....#if
aa40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
aa50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
aa60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
aa70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
aa80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
aa90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
aaa0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
aab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
aac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
aad0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
aae0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
aaf0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
ab00: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
ab10: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
ab20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ab30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ab40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ab50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ab60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ab70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ab80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ab90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
aba0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
abb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
abc0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
abd0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
abe0: 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d  _step(IntPtr stm
abf0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
ac00: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ac10: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
ac20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ac30: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
ac40: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
ac50: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
ac60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ac70: 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
ac80: 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  le sqlite3_colum
ac90: 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  n_double(IntPtr 
aca0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
acb0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
acc0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
acd0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
ace0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
acf0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
ad00: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
ad10: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
ad20: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
ad30: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
ad40: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
ad50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ad60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ad70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ad80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ad90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ada0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
adb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
adc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
add0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ade0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
adf0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
ae00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
ae10: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
ae20: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
ae30: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ae40: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ae50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ae60: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ae70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ae80: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ae90: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
aea0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
aeb0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
aec0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
aed0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
aee0: 6e 64 65 78 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndex);..#else.. 
aef0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
af00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
af10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
af20: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
af30: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
af40: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
af50: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
af60: 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29   out long value)
af70: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
af80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
af90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
afa0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
afb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
afc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
afd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
afe0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
aff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b000: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b010: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b020: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b030: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
b040: 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  umn_blob(IntPtr 
b050: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
b060: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b070: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b080: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b090: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b0a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b0b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b0c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b0d0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b0e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b0f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b100: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b110: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b120: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49  3_column_bytes(I
b130: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b140: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
b150: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b160: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b170: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b180: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b190: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b1a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b1b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b1c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b1d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b1e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b1f0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
b200: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
b210: 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73 74  ytes16(IntPtr st
b220: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
b230: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b240: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b250: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b260: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b270: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b280: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b290: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
b2a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b2b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b2c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
b2d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b2e0: 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
b2f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
b300: 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
b310: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
b320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b340: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b350: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b360: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b370: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b380: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b390: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b3a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b3b0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b3c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b3d0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
b3e0: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
b3f0: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74  _collation(IntPt
b400: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
b410: 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Name, int nType,
b420: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
b430: 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
b440: 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  func);....#if !P
b450: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b460: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b470: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b480: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b490: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b4a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b4b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b4d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b4e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b4f0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b500: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
b510: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  _count(IntPtr co
b520: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
b530: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b540: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b550: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b560: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b570: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b580: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b590: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b5a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b5b0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b5c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b5d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b5e0: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
b5f0: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b  _blob(IntPtr p);
b600: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b610: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b620: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b630: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b650: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b660: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
b670: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b680: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b690: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
b6a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b6b0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
b6c0: 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74  _value_bytes(Int
b6d0: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
b6e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b6f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b700: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b710: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b720: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b730: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b740: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b750: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b760: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b770: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b780: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
b790: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
b7a0: 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b  tes16(IntPtr p);
b7b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b7c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b7d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b7e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b7f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b800: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b810: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
b820: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b830: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
b840: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
b850: 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  uble(IntPtr p);.
b860: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b870: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b880: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b890: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b8a0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
b8b0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
b8c0: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
b8d0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
b8e0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
b8f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b900: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b910: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b920: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b930: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b940: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b950: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b960: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b970: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b980: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b990: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b9a0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
b9b0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
b9c0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b9d0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b9e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b9f0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ba00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ba10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ba20: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
ba30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ba40: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
ba50: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
ba60: 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a  Ptr p);..#else..
ba70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ba80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
ba90: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
baa0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
bab0: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
bac0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
bad0: 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76 61 6c  p, out Int64 val
bae0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
baf0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
bb00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
bb10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bb20: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
bb30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
bb40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
bb50: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
bb60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bb70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
bb80: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bb90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bba0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
bbb0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
bbc0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
bbd0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
bbe0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
bbf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bc00: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
bc10: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
bc20: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
bc30: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
bc40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bc50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
bc60: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
bc70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bc80: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
bc90: 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
bca0: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
bcb0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
bcc0: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
bcd0: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
bce0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
bcf0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
bd00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bd10: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
bd20: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
bd30: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
bd40: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
bd50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
bd60: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
bd70: 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
bd80: 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
bd90: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
bda0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bdb0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bdc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bdd0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
bde0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
bdf0: 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
be00: 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
be10: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
be20: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
be30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
be40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
be50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
be60: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
be70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
be80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
be90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
bea0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
beb0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
bec0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bed0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
bee0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
bef0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
bf00: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
bf10: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
bf20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
bf30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
bf40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bf50: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
bf60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
bf70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
bf80: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
bf90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bfa0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
bfb0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
bfc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bfd0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
bfe0: 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65  esult_error_code
bff0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c000: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
c010: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
c020: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c030: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c040: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c050: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c060: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c070: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c080: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c090: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c0a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c0b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c0c0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
c0d0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
c0e0: 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e  _error_toobig(In
c0f0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
c100: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c110: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c120: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c130: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c140: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c150: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c160: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c170: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c180: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c190: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c1a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c1b0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
c1c0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d  result_error_nom
c1d0: 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  em(IntPtr contex
c1e0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
c1f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c200: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c210: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c220: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c230: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c240: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c250: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c260: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c270: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c280: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c290: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c2a0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
c2b0: 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
c2c0: 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b  , IntPtr value);
c2d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c2e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c2f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c300: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c310: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c320: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c330: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c340: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c350: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c360: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c370: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c380: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c390: 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
c3a0: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
c3b0: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
c3c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
c3d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
c3e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c3f0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
c400: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
c410: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c420: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
c430: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c440: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
c450: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
c460: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c470: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
c480: 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20  sult_int(IntPtr 
c490: 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c  context, int val
c4a0: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
c4b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c4c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c4d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c4e0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c4f0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c500: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c510: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c520: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
c530: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
c540: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
c550: 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
c560: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
c570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c580: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c590: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c5a0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c5b0: 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
c5c0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
c5d0: 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20  text, ref Int64 
c5e0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
c5f0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c600: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c610: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c620: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c630: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c640: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c650: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c660: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c670: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c680: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c690: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c6a0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c6b0: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
c6c0: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
c6d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c6e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c6f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c700: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c710: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c720: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c730: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c740: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c750: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c760: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c770: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c780: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
c790: 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
c7a0: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
c7b0: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
c7c0: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
c7d0: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
c7e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c7f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c800: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c810: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c820: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c830: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c840: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c850: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c860: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c870: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c880: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c890: 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
c8a0: 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
c8b0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
c8c0: 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
c8d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c8e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c8f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c900: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c910: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c920: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c930: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
c940: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
c950: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c960: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c970: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
c980: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
c990: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c9a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c9b0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
c9c0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
c9d0: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
c9e0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
c9f0: 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
ca00: 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
ca10: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
ca20: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ca30: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ca40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ca50: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
ca60: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ca70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ca80: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
ca90: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
caa0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
cab0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cac0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
cad0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
cae0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
caf0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
cb00: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
cb10: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
cb20: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
cb30: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
cb40: 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
cb50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
cb60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
cb70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
cb80: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
cb90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
cba0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
cbb0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
cbc0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
cbd0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cbe0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cbf0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
cc00: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
cc10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cc20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cc30: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
cc40: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
cc50: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
cc60: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
cc70: 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
cc80: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
cc90: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
cca0: 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  DEC..#if !PLATFO
ccb0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ccc0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ccd0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cce0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ccf0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cd00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cd10: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cd20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cd30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cd40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cd50: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
cd60: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
cd70: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
cd80: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
cd90: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
cda0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
cdb0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
cdc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cdd0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
cde0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
cdf0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ce00: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ce10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ce20: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ce30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ce40: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ce50: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
ce60: 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
ce70: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
ce80: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
ce90: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
cea0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ceb0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
cec0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ced0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
cee0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
cef0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
cf00: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
cf10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cf20: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
cf30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
cf40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
cf50: 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
cf60: 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
cf70: 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61  LiteUpdateCallba
cf80: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
cf90: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
cfa0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cfb0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
cfc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cfd0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
cfe0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cff0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d000: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d010: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d020: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d030: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d040: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d050: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d  Ptr sqlite3_comm
d060: 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  it_hook(IntPtr d
d070: 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  b, SQLiteCommitC
d080: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
d090: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
d0a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d0b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d0c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d0d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d0e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d0f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d100: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d110: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d120: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d130: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d140: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d150: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
d160: 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62  _trace(IntPtr db
d170: 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
d180: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
d190: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20  tr pvUser);.... 
d1a0: 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
d1b0: 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b  te3_config() tak
d1c0: 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
d1d0: 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
d1e0: 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
d1f0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
d200: 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
d210: 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61  ssible calls tha
d220: 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65  t we want to use
d230: 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d240: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d250: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d260: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
d270: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
d280: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
d290: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d2a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d2b0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d2c0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d2d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
d2e0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
d2f0: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
d300: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d310: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d320: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d330: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
d340: 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66  _none(SQLiteConf
d350: 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a  igOpsEnum op);..
d360: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d370: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d380: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d390: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
d3a0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
d3b0: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
d3c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d3d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d3e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d3f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d400: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
d410: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
d420: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
d430: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d440: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d450: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
d460: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
d470: 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  int(SQLiteConfig
d480: 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
d490: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
d4a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d4b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d4d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
d4e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
d4f0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
d500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d520: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d540: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
d550: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
d560: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
d570: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d580: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
d590: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
d5a0: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c  3_config_log(SQL
d5b0: 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
d5c0: 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61   op, SQLiteLogCa
d5d0: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
d5e0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
d5f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d600: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d610: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d620: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d630: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d650: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d660: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d670: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d680: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d690: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d6a0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d6b0: 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
d6c0: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
d6d0: 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
d6e0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
d6f0: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
d700: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d710: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d720: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d730: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d740: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d750: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d760: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
d770: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d780: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
d790: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d7a0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d7b0: 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
d7c0: 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
d7d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d7e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d7f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d800: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d810: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d820: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d830: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d840: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d850: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d860: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d870: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d880: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d890: 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e  te3_next_stmt(In
d8a0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
d8b0: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
d8c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d8d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d8e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d8f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d900: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d910: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d920: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d930: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d940: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d950: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d960: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d970: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d980: 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64  e3_exec(IntPtr d
d990: 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c  b, byte[] strSql
d9a0: 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62  , IntPtr pvCallb
d9b0: 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61  ack, IntPtr pvPa
d9c0: 72 61 6d 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ram, out IntPtr 
d9d0: 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20  errMsg);....#if 
d9e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d9f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
da00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
da10: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
da20: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
da30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
da40: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
da50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
da60: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
da70: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
da80: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
da90: 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74   sqlite3_get_aut
daa0: 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64  ocommit(IntPtr d
dab0: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
dac0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dad0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
dae0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
daf0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
db00: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
db10: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
db20: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
db30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
db40: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
db50: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
db60: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
db70: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
db80: 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f  extended_result_
db90: 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c  codes(IntPtr db,
dba0: 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a   int onoff);....
dbb0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
dbc0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
dbd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
dbe0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
dbf0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
dc00: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dc10: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
dc20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
dc30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
dc40: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
dc50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
dc60: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
dc70: 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
dc80: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
dc90: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
dca0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
dcb0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
dcc0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
dcd0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
dce0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dcf0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
dd00: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
dd10: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
dd20: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
dd30: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
dd40: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
dd50: 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
dd60: 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  d_errcode(IntPtr
dd70: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
dd80: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
dd90: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
dda0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ddb0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ddc0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ddd0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
dde0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ddf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
de00: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
de10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
de20: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
de30: 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28   sqlite3_errstr(
de40: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
de50: 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20  rc); /* 3.7.15+ 
de60: 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e  */....    // Sin
de70: 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  ce sqlite3_log()
de80: 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c   takes a variabl
de90: 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c  e argument list,
dea0: 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72   we have to over
deb0: 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e  load declaration
dec0: 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c  s..    // for al
ded0: 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73  l possible calls
dee0: 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61  .  For now, we a
def0: 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67  re only exposing
df00: 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67   a single string
df10: 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65  , and..    // de
df20: 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c  pend on the call
df30: 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65  er to format the
df40: 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50   string...#if !P
df50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
df60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
df70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
df80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
df90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
dfa0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
dfb0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
dfc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
dfd0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
dfe0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
dff0: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
e000: 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69  sqlite3_log(SQLi
e010: 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72  teErrorCode iErr
e020: 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f  Code, byte[] zFo
e030: 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rmat);....#if !P
e040: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e050: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
e060: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e070: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
e080: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
e090: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
e0a0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
e0b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e0c0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
e0d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e0e0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
e0f0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
e100: 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
e110: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
e120: 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f  ] zDbName, int o
e130: 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b  p, IntPtr pArg);
e140: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e150: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e160: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e170: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e180: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e190: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e1a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e1b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e1c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e1d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e1e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e1f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
e200: 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28  te3_backup_init(
e210: 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62  IntPtr destDb, b
e220: 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c  yte[] zDestName,
e230: 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62   IntPtr sourceDb
e240: 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65  , byte[] zSource
e250: 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
e260: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e270: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
e280: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e290: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
e2a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
e2b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
e2c0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
e2d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e2e0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
e2f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e300: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
e310: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
e320: 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49  e3_backup_step(I
e330: 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e  ntPtr backup, in
e340: 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66  t nPage);....#if
e350: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e360: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e370: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e380: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e390: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e3a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e3b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e3c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e3d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e3e0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e3f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
e400: 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
e410: 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74  _remaining(IntPt
e420: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
e430: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e440: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e450: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e460: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e470: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e480: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e490: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e4a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e4b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e4c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e4d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
e4e0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  nt sqlite3_backu
e4f0: 70 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50  p_pagecount(IntP
e500: 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23  tr backup);....#
e510: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e520: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e530: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e540: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e550: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e560: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e570: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e580: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e590: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e5a0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e5b0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e5c0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e5d0: 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
e5e0: 76 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20  vtab(IntPtr db, 
e5f0: 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d  IntPtr zSQL);...
e600: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e610: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e620: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e630: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e640: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e650: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e660: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e670: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e680: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e690: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e6a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e6b0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
e6c0: 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20  _mprintf(IntPtr 
e6d0: 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73  format, __arglis
e6e0: 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  t);..    #endreg
e6f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51  ion....    // SQ
e700: 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74  Lite API calls t
e710: 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64  hat are provided
e720: 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22   by "well-known"
e730: 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74   extensions that
e740: 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c   may be statical
e750: 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65  ly..    // linke
e760: 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
e770: 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69  e core native li
e780: 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20  brary currently 
e790: 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65  in use...    #re
e7a0: 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73  gion extension s
e7b0: 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
e7c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e7d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e7e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e7f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e800: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e810: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e820: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e830: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e840: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e850: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e860: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e870: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
e880: 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
e890: 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  le_module(IntPtr
e8a0: 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
e8b0: 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f  , ref sqlite3_mo
e8c0: 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74  dule module, Int
e8d0: 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
e8e0: 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
e8f0: 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69  xDestroy);....#i
e900: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e910: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e920: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e930: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e940: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e950: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e960: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e970: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e980: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e990: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e9a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
e9b0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70  oid sqlite3_disp
e9c0: 6f 73 65 5f 6d 6f 64 75 6c 65 28 72 65 66 20 73  ose_module(ref s
e9d0: 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 70 4d  qlite3_module pM
e9e0: 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 23 65 6e  odule);..    #en
e9f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
ea00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ea50: 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
ea60: 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20   Delegates..#if 
ea70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
ea80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ea90: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
eaa0: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
eab0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
eac0: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
ead0: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
eae0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
eaf0: 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20   xCreate(..     
eb00: 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a     IntPtr pDb,..
eb10: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
eb20: 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Aux,..        in
eb30: 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
eb40: 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61   [MarshalAs(Unma
eb50: 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61  nagedType.LPArra
eb60: 79 2c 20 53 69 7a 65 50 61 72 61 6d 49 6e 64 65  y, SizeParamInde
eb70: 78 20 3d 20 32 29 5d 0d 0a 20 20 20 20 20 20 20  x = 2)]..       
eb80: 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d   IntPtr[] argv,.
eb90: 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
eba0: 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
ebb0: 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
ebc0: 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
ebd0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
ebe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ec30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ec40: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
ec50: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
ec60: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
ec70: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
ec80: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
ec90: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
eca0: 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63  rrorCode xConnec
ecb0: 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
ecc0: 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
ecd0: 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
ece0: 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
ecf0: 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61 72 73 68  ..        [Marsh
ed00: 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79  alAs(UnmanagedTy
ed10: 70 65 2e 4c 50 41 72 72 61 79 2c 20 53 69 7a 65  pe.LPArray, Size
ed20: 50 61 72 61 6d 49 6e 64 65 78 20 3d 20 32 29 5d  ParamIndex = 2)]
ed30: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
ed40: 5b 5d 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  [] argv,..      
ed50: 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
ed60: 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
ed70: 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
ed80: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
ede0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
edf0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ee00: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
ee10: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
ee20: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ee30: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
ee40: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
ee50: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
ee60: 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  e xBestIndex(.. 
ee70: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
ee80: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
ee90: 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20  tPtr pIndex..   
eea0: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
eeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eef0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
ef00: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ef10: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
ef20: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
ef30: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
ef40: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ef50: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
ef60: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
ef70: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
ef80: 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  Disconnect(..   
ef90: 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
efa0: 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
efb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
efc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efe0: 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 0d 0a 0d 0a  ////////////....
f000: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f010: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f020: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
f030: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
f040: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f050: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
f060: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
f070: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
f080: 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a  Code xDestroy(..
f090: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
f0a0: 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
f0b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0e0: 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
f100: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f110: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f120: 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
f130: 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
f140: 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
f150: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
f160: 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
f170: 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
f180: 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a  rorCode xOpen(..
f190: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
f1a0: 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
f1b0: 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f  ef IntPtr pCurso
f1c0: 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
f1d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
f220: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f230: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f240: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
f250: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
f260: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f270: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
f280: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
f290: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
f2a0: 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20  Code xClose(..  
f2b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
f2c0: 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
f2d0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
f320: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f330: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f340: 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
f350: 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
f360: 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
f370: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
f380: 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
f390: 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
f3a0: 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
f3b0: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
f3c0: 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
f3d0: 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
f3e0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69          IntPtr i
f3f0: 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20  dxStr,..        
f400: 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
f410: 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76     IntPtr[] argv
f420: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
f480: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f490: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f4a0: 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
f4b0: 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
f4c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f4d0: 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
f4e0: 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
f4f0: 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
f500: 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
f510: 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
f520: 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
f530: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f580: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f590: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f5a0: 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
f5b0: 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
f5c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f5d0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
f5e0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
f5f0: 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d  egate int xEof(.
f600: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
f610: 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
f620: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f670: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
f680: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f690: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
f6a0: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
f6b0: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
f6c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f6d0: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
f6e0: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
f6f0: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75  eErrorCode xColu
f700: 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  mn(..        Int
f710: 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
f720: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
f730: 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
f740: 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29  int index..    )
f750: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
f7b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f7c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
f7d0: 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
f7e0: 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
f7f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
f800: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
f810: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
f820: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
f830: 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  wId(..        In
f840: 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
f850: 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
f860: 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
f870: 0a 20 20 20 20 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 2f 2f  ////////////////
f8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8c0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f8d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f8e0: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
f8f0: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
f900: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
f910: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
f920: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
f930: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
f940: 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
f950: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
f960: 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
f970: 20 20 69 6e 74 20 6e 44 61 74 61 2c 0d 0a 20 20    int nData,..  
f980: 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 70 44        IntPtr apD
f990: 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ata,..        re
f9a0: 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
f9b0: 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
f9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
fa10: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fa20: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
fa30: 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
fa40: 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
fa50: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
fa60: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fa70: 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
fa80: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
fa90: 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20  xBegin(..       
faa0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
fab0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
fb10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fb20: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fb30: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
fb40: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
fb50: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
fb60: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
fb70: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
fb80: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fb90: 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20   xSync(..       
fba0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
fbb0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
fbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
fc10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fc20: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fc30: 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
fc40: 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
fc50: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
fc60: 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
fc70: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
fc80: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fc90: 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20   xCommit(..     
fca0: 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
fcb0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcf0: 2f 2f 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 0d 0a 0d 0a 23 69  //////////....#i
fd10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
fd20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
fd30: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
fd40: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
fd50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fd60: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
fd70: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
fd80: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
fd90: 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  de xRollback(.. 
fda0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
fdb0: 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
fdc0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
fe10: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
fe20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
fe30: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
fe40: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
fe50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
fe60: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
fe70: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
fe80: 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64  legate int xFind
fe90: 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
fea0: 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
feb0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41  ..        int nA
fec0: 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  rg,..        Int
fed0: 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
fee0: 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
fef0: 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
ff00: 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
ff10: 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a  tPtr pUserData..
ff20: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
ff30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
ff80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ff90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ffa0: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
ffb0: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
ffc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ffd0: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
ffe0: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
fff0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
10000 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
10010 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
10020 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
10030 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a  r zNew..    );..
10040 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10090 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
100a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
100b0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
100c0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
100d0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
100e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
100f0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
10100 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
10110 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
10120 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49  oint(..        I
10130 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
10140 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
10150 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
10160 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
101b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
101c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
101d0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
101e0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
101f0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
10200 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
10210 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
10220 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
10230 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65  rorCode xRelease
10240 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
10250 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
10260 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
10270 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f  ////////////////
102c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
102d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
102e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
102f0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
10300 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
10310 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10320 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
10330 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
10340 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
10350 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ode xRollbackTo(
10360 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
10370 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
10380 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
10390 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
103e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
103f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10400 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10410 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
10420 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
10430 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10440 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
10450 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
10460 74 65 20 69 6e 74 20 78 46 75 6e 63 28 0d 0a 20  te int xFunc(.. 
10470 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
10480 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  ontext,..       
10490 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
104a0 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
104b0 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
104c0 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61 6d 49  rray, SizeParamI
104d0 6e 64 65 78 20 3d 20 31 29 5d 0d 0a 20 20 20 20  ndex = 1)]..    
104e0 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67      IntPtr[] arg
104f0 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  v..    );....   
10500 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10550 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10560 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10570 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
10580 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
10590 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
105a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
105b0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
105c0 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72  gate void xDestr
105d0 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  oyModule(IntPtr 
105e0 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20  pClientData);.. 
105f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
10600 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
10610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10650 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
10660 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65  Native Structure
10670 73 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  s..    [StructLa
10680 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
10690 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
106a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
106b0 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  t sqlite3_module
106c0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
106d0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72   public int iVer
106e0 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  sion;..        p
106f0 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43  ublic xCreate xC
10700 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  reate;..        
10710 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20  public xConnect 
10720 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20  xConnect;..     
10730 20 20 20 70 75 62 6c 69 63 20 78 42 65 73 74 49     public xBestI
10740 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b  ndex xBestIndex;
10750 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10760 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
10770 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20  sconnect;..     
10780 20 20 20 70 75 62 6c 69 63 20 78 44 65 73 74 72     public xDestr
10790 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20  oy xDestroy;..  
107a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70        public xOp
107b0 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20  en xOpen;..     
107c0 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65     public xClose
107d0 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20   xClose;..      
107e0 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72    public xFilter
107f0 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20   xFilter;..     
10800 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20     public xNext 
10810 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20  xNext;..        
10820 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66  public xEof xEof
10830 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10840 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  c xColumn xColum
10850 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
10860 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  ic xRowId xRowId
10870 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10880 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  c xUpdate xUpdat
10890 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
108a0 69 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e  ic xBegin xBegin
108b0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
108c0 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a  c xSync xSync;..
108d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
108e0 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d  Commit xCommit;.
108f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
10900 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
10910 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ack;..        pu
10920 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69  blic xFindFuncti
10930 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
10940 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10950 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  c xRename xRenam
10960 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54  e;..        /* T
10970 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
10980 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20   are in version 
10990 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33  1 of the sqlite3
109a0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20  _module..       
109b0 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f    * object.  Tho
109c0 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72  se below are for
109d0 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67   version 2 and g
109e0 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20  reater. */..    
109f0 20 20 20 20 70 75 62 6c 69 63 20 78 53 61 76 65      public xSave
10a00 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
10a10 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10a20 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65  c xRelease xRele
10a30 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ase;..        pu
10a40 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  blic xRollbackTo
10a50 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20   xRollbackTo;.. 
10a60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ab0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
10ac0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
10ad0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
10ae0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
10af0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
10b00 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20  3_vtab..    {.. 
10b10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
10b20 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 70 4d 6f  lite3_module pMo
10b30 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  dule;..        p
10b40 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20  ublic int nRef; 
10b50 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45  /* NO LONGER USE
10b60 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  D */..        pu
10b70 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72  blic IntPtr zErr
10b80 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  Msg;..    }.... 
10b90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
10ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10be0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
10bf0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
10c00 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
10c10 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
10c20 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
10c30 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  rsor..    {..   
10c40 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
10c50 74 65 33 5f 76 74 61 62 20 70 56 54 61 62 3b 0d  te3_vtab pVTab;.
10c60 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10cc0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
10cd0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
10ce0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
10cf0 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
10d00 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
10d10 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
10d20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
10d30 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
10d40 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
10d50 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
10d60 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
10d70 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
10d80 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
10d90 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
10da0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10db0 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20   if (constraint 
10dc0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
10dd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10de0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
10df0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43   = constraint.iC
10e00 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
10e10 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e          op = con
10e20 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20  straint.op;..   
10e30 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61               usa
10e40 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  ble = constraint
10e50 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  .usable;..      
10e60 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f            iTermO
10e70 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69  ffset = constrai
10e80 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt.iTermOffset;.
10e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10ea0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10eb0 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10f00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
10f10 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
10f20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
10f30 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
10f40 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  tOp op;..       
10f50 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
10f60 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ble;..        pu
10f70 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66  blic int iTermOf
10f80 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  fset;..    }....
10f90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10fe0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
10ff0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
11000 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
11010 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
11020 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
11030 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a  orderby..    {..
11040 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
11050 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
11060 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
11070 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72     SQLiteIndexOr
11080 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20  derBy orderBy.. 
11090 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
110a0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
110b0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
110c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
110d0 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d  rderBy != null).
110e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
110f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11100 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42  iColumn = orderB
11110 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  y.iColumn;..    
11120 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63              desc
11130 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b   = orderBy.desc;
11140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
11150 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
11160 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
11170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
111b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
111c0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
111d0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
111e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
111f0 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a   byte desc;   /*
11200 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
11210 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
11220 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
11230 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11280 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
11290 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
112a0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
112b0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
112c0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
112d0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
112e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
112f0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
11300 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
11310 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
11320 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
11330 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e  straintUsage con
11340 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
11350 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
11360 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
11370 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11380 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
11390 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
113a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
113b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
113c0 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78         argvIndex
113d0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
113e0 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20  ge.argvIndex;.. 
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
11400 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  mit = constraint
11410 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20  Usage.omit;..   
11420 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11430 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11440 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
11490 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61      public int a
114a0 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20  rgvIndex; /* if 
114b0 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  >0, constraint i
114c0 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
114d0 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20  o xFilter */..  
114e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
114f0 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44  e omit;     /* D
11500 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
11510 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
11520 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  raint */..    }.
11530 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
11540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11580 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
11590 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
115a0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
115b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
115c0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
115d0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a  ex_info..    {..
115e0 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
115f0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
11600 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72  blic int nConstr
11610 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20  aint; /* Number 
11620 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43  of entries in aC
11630 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
11640 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
11650 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b  Ptr aConstraint;
11660 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
11670 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 0d 0a   int nOrderBy;..
11680 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
11690 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d  ntPtr aOrderBy;.
116a0 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70  .        /* Outp
116b0 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
116c0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
116d0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d  onstraintUsage;.
116e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
116f0 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
11700 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
11710 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
11720 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20   the index */.. 
11730 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
11740 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20  ring idxStr;    
11750 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70      /* String, p
11760 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64  ossibly obtained
11770 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
11780 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lloc */..       
11790 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64   public int need
117a0 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a  ToFreeIdxStr; /*
117b0 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73 69   Free idxStr usi
117c0 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ng sqlite3_free(
117d0 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20  ) if true */..  
117e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
117f0 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
11800 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
11810 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
11820 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
11830 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
11840 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
11850 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
11860 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
11870 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 7d   index */..    }
11880 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
11890 0d 0a 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41  ..  }....#if PLA
118a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
118b0 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
118c0 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
118d0 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
118e0 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
118f0 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
11900 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
11910 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
11920 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
11930 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
11940 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49  CriticalHandle(I
11950 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e  ntPtr invalidHan
11960 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  dleValue)..    {
11970 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
11980 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
11990 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43  lue;..      _isC
119a0 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  losed = false;..
119b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72      }....    ~Cr
119c0 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a  iticalHandle()..
119d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
119e0 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
119f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
11a00 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28  te void Cleanup(
11a10 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
11a20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a  if (!IsClosed)..
11a30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11a40 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20   this._isClosed 
11a50 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
11a60 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29   if (!IsInvalid)
11a70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
11a80 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61         ReleaseHa
11a90 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ndle();..       
11aa0 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
11ab0 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
11ac0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11ad0 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
11ae0 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73  public void Clos
11af0 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
11b00 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
11b10 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
11b20 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
11b30 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
11b40 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
11b50 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
11b60 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
11b70 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
11b80 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
11b90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65      {..      Cle
11ba0 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  anup();..    }..
11bb0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
11bc0 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65  abstract bool Re
11bd0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a  leaseHandle();..
11be0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
11bf0 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
11c00 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20  ntPtr value)..  
11c10 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
11c20 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  e = value;..    
11c30 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
11c40 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73  void SetHandleAs
11c50 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b  Invalid()..    {
11c60 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
11c70 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
11c80 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
11c90 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
11ca0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
11cb0 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a   bool IsClosed..
11cc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
11cd0 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f   { return _isClo
11ce0 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  sed; }..    }...
11cf0 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
11d00 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
11d10 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  lid..    {..    
11d20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
11d30 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  .  }....#endif..
11d40 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
11d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d90 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
11da0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
11db0 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  nHandle Class.. 
11dc0 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68     // Handles th
11dd0 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61  e unmanaged data
11de0 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e  base pointer, an
11df0 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  d provides final
11e00 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20  ization..    // 
11e10 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d  support for it..
11e20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
11e30 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
11e40 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
11e50 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
11e60 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53  le..    {..#if S
11e70 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26  QLITE_STANDARD &
11e80 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  & !PLATFORM_COMP
11e90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11ea0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64        internal d
11eb0 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f  elegate void Clo
11ec0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
11ed0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
11ee0 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
11ef0 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
11f00 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
11f10 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
11f20 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65  tatic CloseConne
11f30 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c  ctionCallback cl
11f40 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d  oseConnection =.
11f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
11f60 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
11f70 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  nection;..#endif
11f80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
11fe0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11ff0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
12000 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
12010 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
12020 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
12030 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
12040 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12090 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
120a0 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d  ol ownHandle;...
120b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
120c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
12110 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
12120 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
12130 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
12140 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
12150 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12160 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
12170 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12180 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
12190 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
121a0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
121b0 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
121c0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
121d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
121e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
121f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
12200 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
12210 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12220 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12230 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12240 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
12250 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12260 20 20 20 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 2f 2f 0d 0a 0d 0a 20 20  //////////....  
122b0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
122c0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
122d0 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  andle(IntPtr db,
122e0 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29   bool ownHandle)
122f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
12300 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d  this(ownHandle).
12310 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
12320 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12330 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
12340 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
12350 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
12360 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
12380 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20  his.ownHandle = 
12390 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
123a0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
123b0 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
123c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
123d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
123e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12420 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12430 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
12440 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
12450 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e(bool ownHandle
12460 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
12470 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
12480 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
12490 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
124a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
124b0 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
124c0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
124d0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
124e0 6e 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74  nt(ref UnsafeNat
124f0 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65  iveMethods.conne
12500 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65  ctionCount);..#e
12510 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
12520 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12570 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
12580 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
12590 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
125a0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
125b0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
125c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
125d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
125e0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
125f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
12600 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12610 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e       if (!ownHan
12620 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65  dle) return true
12630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
12640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12650 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
12660 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
12670 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12680 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
12690 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
126a0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
126b0 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126d0 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
126e0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
126f0 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
12700 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
12710 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
12720 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
12730 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
12740 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
12750 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c  Connection(this,
12760 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
12770 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
12780 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
12790 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
127a0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
127b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
127c0 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
127d0 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
127e0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64  alHandle);..#end
127f0 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  if....#if !NET_C
12800 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
12810 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
12820 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
12830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12850 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
12860 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
12870 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
12890 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
128a0 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
128b0 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le));..         
128c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
128d0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
128e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
128f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12900 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
12910 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
12920 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
12930 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
12940 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12960 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
12970 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
12980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
129a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
129b0 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
129c0 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65  ion(this, handle
129d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
129e0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
129f0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
12a00 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
12a10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12a20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
12a30 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
12a40 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
12a50 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
12a60 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
12a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a80 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
12a90 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e  ativeMethods.con
12aa0 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
12ab0 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
12ac0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
12ad0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
12ae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
12af0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
12b00 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12b10 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
12b20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
12b30 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
12b40 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
12b50 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
12b60 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
12b70 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
12b80 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
12b90 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
12ba0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
12bb0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12bd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12be0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
12bf0 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
12c00 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
12c30 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
12c40 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
12c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c60 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20   handle, e));.. 
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c90 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
12ca0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
12cc0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
12cd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12ce0 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
12cf0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
12d00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12d10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
12d20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
12d30 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
12d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12d60 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
12d70 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
12da0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
12db0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12dc0 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
12dd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12de0 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
12df0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
12e00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12e50 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
12e60 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
12e70 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
12e80 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
12e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
12ea0 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
12eb0 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
12ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
12ed0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
12ee0 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
12ef0 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
12f00 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
12f10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12f60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
12f70 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
12f80 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
12f90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
12fa0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
12fb0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
12fc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12fe0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
12ff0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
13000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13020 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
13030 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
13040 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13050 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13060 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
13070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130c0 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
130d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
130e0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
130f0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
13100 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
13110 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13120 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
13130 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
13140 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
13150 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13160 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13170 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
13180 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
13190 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
131a0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
131b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
131c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
131d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
131e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
131f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13210 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
13220 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
13230 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
13240 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
13250 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
13260 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
13270 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e  Lite statements.
13280 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13290 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
132a0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
132b0 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
132c0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
132d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
132e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
132f0 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
13300 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
13310 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
13320 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
13330 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13380 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
13390 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
133a0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
133b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133e0 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
13410 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
13420 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
13430 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  tr(SQLiteStateme
13440 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a  ntHandle stmt)..
13450 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13460 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20         if (stmt 
13470 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
13480 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
13490 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
134a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
134b0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
134c0 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  mt.syncRoot)..#e
134d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
134e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13500 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b  urn stmt.handle;
13510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13520 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
13530 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13540 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
13550 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
13560 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
135a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
135c0 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74  ernal SQLiteStat
135d0 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69  ementHandle(SQLi
135e0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
135f0 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73  le cnn, IntPtr s
13600 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tmt)..          
13610 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
13620 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
13630 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13640 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
13650 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
13660 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
13670 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13680 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
13690 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
136a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
136b0 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20  ndle(stmt);..   
136c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
136d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
136e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13720 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13730 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
13740 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
13750 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
13760 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
13770 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
13780 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
13790 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
137a0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
137b0 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
137c0 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
137d0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
137e0 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d  tatementCount);.
137f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13800 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13850 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13860 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
13870 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
13880 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
13890 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
138a0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
138b0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
138c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
138d0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
138e0 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
138f0 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
13900 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
13910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13920 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
13930 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
13940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13950 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
13960 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
13970 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13980 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
13990 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
139a0 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  ent(cnn, localHa
139b0 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
139c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
139d0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
139e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
139f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
13a00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13a10 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13a20 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
13a30 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
13a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a50 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74     "FinalizeStat
13a60 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ement: {0}", loc
13a70 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20  alHandle));..   
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13aa0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
13ab0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13ac0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13ad0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
13af0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
13b00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
13b30 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
13b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
13b70 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
13b80 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
13b90 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
13ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bb0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
13bc0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
13bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13be0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13bf0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
13c00 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
13c30 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
13c40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
13c50 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
13c60 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
13c70 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
13c80 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
13c90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13ca0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
13cb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
13cc0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
13cd0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
13ce0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
13cf0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
13d00 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
13d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
13d20 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
13d30 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
13d40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
13d50 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
13d60 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
13d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d80 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
13d90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
13db0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
13dc0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
13dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13de0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
13df0 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65  tatement: {0}, e
13e00 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
13e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
13e30 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20   e));..         
13e40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13e50 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
13e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13e80 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
13e90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13ea0 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
13eb0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
13ec0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
13ed0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ef0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
13f00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
13f10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f30 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
13f40 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
13f50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13f60 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
13f70 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
13f80 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
13f90 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
13fa0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
13fb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13fc0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14010 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
14020 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
14030 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
14040 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
14050 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14060 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
14070 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
14080 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
14090 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
140a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61  ativeMethods.sta
140b0 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20  tementCount);.. 
140c0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
140d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
14130 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
14140 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
14150 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14160 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
14170 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
14180 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14190 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
141a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
141b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
141c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
141d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
141e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
141f0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
14200 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
14210 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14220 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
14230 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14280 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
14290 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
142a0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
142b0 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
142c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
142d0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
142e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
142f0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
14300 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
14310 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14330 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
14340 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
14350 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14360 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
14370 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
14380 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
14390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
143e0 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75  gion SQLiteBacku
143f0 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  pHandle Class.. 
14400 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
14410 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
14420 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
14430 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20  d SQLite backup 
14440 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e  objects...    in
14450 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
14460 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ass SQLiteBackup
14470 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
14480 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
14490 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
144a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
144b0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
144c0 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
144d0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
144e0 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
144f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14540 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
14550 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
14560 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
14570 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
145d0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
145e0 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
145f0 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61   IntPtr(SQLiteBa
14600 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75  ckupHandle backu
14610 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  p)..        {.. 
14620 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
14630 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ackup != null)..
14640 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
14650 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
14660 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
14680 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52  ck (backup.syncR
14690 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
146b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
146c0 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b       return back
146d0 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  up.handle;..    
146e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
146f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
14700 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14710 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
14720 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14730 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14780 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
14790 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
147a0 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  le(SQLiteConnect
147b0 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49  ionHandle cnn, I
147c0 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20  ntPtr backup).. 
147d0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
147e0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
147f0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
14800 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14810 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
14820 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
14830 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
14840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14850 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
14860 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
14870 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61      SetHandle(ba
14880 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20  ckup);..        
14890 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
148a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
148b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
14900 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63  rivate SQLiteBac
14910 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  kupHandle()..   
14920 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
14930 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
14940 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
14950 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
14960 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
14970 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Increment(.. 
14980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
14990 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
149a0 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
149b0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
149c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
149d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14a20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
14a30 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
14a40 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
14a50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14a60 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
14a70 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
14a80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14a90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
14aa0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
14ab0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
14ac0 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
14ad0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
14ae0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
14af0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
14b00 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
14b10 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
14b20 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
14b30 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
14b40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
14b50 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63  teBase.FinishBac
14b60 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  kup(cnn, localHa
14b70 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
14b80 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
14b90 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
14bb0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
14bc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14bd0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
14be0 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
14bf0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
14c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c10 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
14c20 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
14c30 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle));..        
14c40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14c50 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
14c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14c70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14c80 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
14c90 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
14ca0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
14cb0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
14cc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14ce0 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
14cf0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
14d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
14d30 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
14d40 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  p(cnn, handle);.
14d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14d60 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
14d70 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
14d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14da0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
14db0 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
14dc0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
14dd0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
14de0 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
14df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e00 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
14e10 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70  veMethods.backup
14e20 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
14e30 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
14e40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14e50 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
14e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14e70 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
14e80 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
14e90 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
14ea0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
14eb0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
14ec0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
14ed0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
14ee0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
14ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
14f00 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
14f10 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
14f20 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
14f30 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
14f40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f60 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
14f70 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
14f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14f90 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
14fa0 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
14fb0 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fd0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
14fe0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
14ff0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15000 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15030 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
15040 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15050 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
15060 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
15070 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
15080 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
150a0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
150b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
150c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
150d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
150e0 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
150f0 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
15100 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15110 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
15120 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
15130 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
15140 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
15150 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
15160 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
15170 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
151d0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
151e0 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
151f0 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
15200 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15210 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
15220 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
15230 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15240 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
15250 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
15260 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  pCount);..      
15270 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
15280 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
152d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
152e0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
152f0 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
15300 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15310 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
15320 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
15330 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15340 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
15350 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
15360 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
15370 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15390 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
153a0 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
153b0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
153c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
153d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
153e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15430 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
15440 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
15450 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
15460 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
15470 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
15480 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15490 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
154a0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
154b0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
154c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
154d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
154e0 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
154f0 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
15500 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
15510 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
15520 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d     #endregion..}
15530 0d 0a                                            ..