System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a9ff1c2fca1c456351dfbc6d5afc0975fd6970fd:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c  (TRACE_PRELOAD |
01a0: 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29 0d  | TRACE_HANDLE).
01b0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01c0: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01d0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01e0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01f0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
0200: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
0210: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
0220: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0240: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0250: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0260: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0270: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0280: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0290: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
02a0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02b0: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02c0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02e0: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
02f0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0300: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0310: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0320: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0330: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
0340: 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53 75  && !DEBUG..  [Su
0350: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
0360: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65  odeSecurity]..#e
0370: 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ndif..  internal
0380: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
0390: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
03a0: 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72  s..  {..      #r
03b0: 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20 48  egion Critical H
03c0: 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44 65  andle Counts (De
03d0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d  bug Build Only).
03e0: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
03f0: 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  E..      //..   
0400: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73     // NOTE: Thes
0410: 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73 65  e counts represe
0420: 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  nt the total num
0430: 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
0440: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ng..      //    
0450: 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64     (non-disposed
0460: 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
0470: 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74 20   derived object 
0480: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
0490: 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74 65   //       create
04a0: 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61 72  d by this librar
04b0: 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61 72  y and are primar
04c0: 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d 0a  ily for use by..
04d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
04e0: 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20 20  he test suite.  
04f0: 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72 65  These counts are
0500: 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79 20   incremented by 
0510: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
0520: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
0530: 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64 20  onstructors and 
0540: 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20  are decremented 
0550: 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  upon the..      
0560: 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73 73  //       success
0570: 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f  ful completion o
0580: 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  f the associated
0590: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a   ReleaseHandle..
05a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d        //       m
05b0: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f  ethods...      /
05c0: 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  /..      interna
05d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6e  l static int con
05e0: 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20  nectionCount;.. 
05f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
0600: 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d 65  atic int stateme
0610: 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  ntCount;..      
0620: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0630: 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b  int backupCount;
0640: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
0650: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0660: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
06b0: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
06c0: 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
06d0: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
06e0: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
06f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0700: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
0710: 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
0720: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
0730: 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
0740: 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
0750: 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
0760: 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
0770: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
0780: 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
0790: 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
07a0: 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
07b0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
07c0: 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
07d0: 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
07e0: 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
07f0: 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
0800: 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
0810: 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
0820: 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
0830: 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
0840: 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
0850: 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
0860: 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
0870: 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
0880: 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
0890: 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
08a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
08b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
08c0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
08d0: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
08e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
08f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
0900: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
0910: 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
0920: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
0930: 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
0940: 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
0950: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
0960: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
0970: 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
0980: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
0990: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
09a0: 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ARY..#if !PLATFO
09b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
09c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ORK..      /// <
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
09e0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
09f0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
0a00: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
0a10: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
0a20: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
0a30: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
0a40: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
0a50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0a60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0a70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0a80: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
0a90: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
0aa0: 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
0ab0: 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
0ac0: 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65 6e  HITECTURE";..#en
0ad0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0b30: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0b40: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44  eadonly string D
0b50: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
0b60: 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20  = ".dll";....   
0b70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0bc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0bd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0be0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
0bf0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
0c00: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
0c10: 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79  in32 LoadLibrary
0c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
0c30: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
0c40: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
0c50: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
0c60: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
0c70: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
0c80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0ca0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
0cb0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
0cc0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
0cd0: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
0ce0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
0cf0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
0d00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
0d10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
0d20: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
0d30: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
0d40: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
0d50: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
0d60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
0d70: 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ns>..#if !PLATFO
0d80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0d90: 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ORK..      [DllI
0da0: 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22  mport("kernel32"
0db0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
0dc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
0dd0: 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  dll",..#endif.. 
0de0: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
0df0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
0e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
0e10: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
0e20: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
0e30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0e40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0e50: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
0e60: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
0e70: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
0e80: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
0e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
0ea0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
0eb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
0ec0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
0ed0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
0ee0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
0ef0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
0f00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f50: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
0f60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0f90: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
0fa0: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
0fb0: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
0fc0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
0fd0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
0fe0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
0ff0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
1000: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
1010: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
1020: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
1030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1050: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1060: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
1070: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
1080: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
1090: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
10a0: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
10b0: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
10c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10d0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
10e0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
10f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1110: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
1120: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1130: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
1140: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
1150: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
1160: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
1170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
11c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
11e0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
11f0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
1200: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
1210: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
1220: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
1230: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
1240: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
1250: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
1260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1270: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1280: 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f  te enum Processo
1290: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20  rArchitecture : 
12a0: 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54  ushort /* COMPAT
12b0: 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20  : Win32. */..   
12c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12d0: 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20  Intel = 0,..    
12e0: 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d        MIPS = 1,.
12f0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
1300: 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 2,..         
1310: 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20   PowerPC = 3,.. 
1320: 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34           SHx = 4
1330: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d  ,..          ARM
1340: 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 5,..         
1350: 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20   IA64 = 6,..    
1360: 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20        Alpha64 = 
1370: 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53  7,..          MS
1380: 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20  IL = 8,..       
1390: 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20     AMD64 = 9,.. 
13a0: 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e           IA32_on
13b0: 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20  _Win64 = 10,..  
13c0: 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20          Unknown 
13d0: 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20  = 0xFFFF..      
13e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1430: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1440: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1450: 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74   /// This struct
1460: 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ure contains inf
1470: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
1480: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75  he current compu
1490: 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20  ter. This..     
14a0: 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68   /// includes th
14b0: 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65  e processor type
14c0: 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d  , page size, mem
14d0: 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65  ory addresses, e
14e0: 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tc...      /// <
14f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1500: 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1510: 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1520: 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72  tial)]..      pr
1530: 69 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53  ivate struct SYS
1540: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
1550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
1560: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
1570: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
1580: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1590: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
15a0: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
15b0: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
15c0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
15d0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
15e0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
15f0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1600: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1610: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
1620: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
1630: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
1640: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1650: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
1660: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
1670: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1690: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
16a0: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
16b0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
16c0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16d0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
16e0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
16f0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
1700: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
1710: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
1720: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1730: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1740: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
1750: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
1760: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
1770: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
1780: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
1790: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
17a0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
17b0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
17c0: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
17d0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
17e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
17f0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
1800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1850: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1860: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
1870: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
1880: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
1890: 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 61   _SQLiteModule a
18a0: 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nd..      /// pr
18b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18c0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
18d0: 6c 64 73 2c 20 62 65 6c 6f 77 2e 0d 0a 20 20 20  lds, below...   
18e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1900: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1910: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
1920: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1930: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1990: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19a0: 20 20 20 20 20 20 2f 2f 2f 20 53 74 6f 72 65 73        /// Stores
19b0: 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65   the mappings be
19c0: 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20  tween processor 
19d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
19e0: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 0d  es and platform.
19f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73  .      /// names
1a00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1a10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1a20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69  rivate static Di
1a30: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1a40: 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73   string> process
1a50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1a60: 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20  atforms;....    
1a70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1ac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1ae0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
1af0: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
1b00: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
1b10: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
1b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
1b30: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
1b40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b50: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1b60: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
1b70: 74 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74  teModule = IntPt
1b80: 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1b90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1bf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e  .      /// For n
1c00: 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ow, this method 
1c10: 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65  simply calls the
1c20: 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68   Initialize meth
1c30: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
1c40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c50: 20 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61   static UnsafeNa
1c60: 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20  tiveMethods().. 
1c70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c80: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d    Initialize();.
1c90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1ca0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1cf0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
1d10: 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69  mpts to initiali
1d20: 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79  ze this class by
1d30: 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65   pre-loading the
1d40: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
1d50: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
1d60: 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  y for the proces
1d70: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1d80: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1d90: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
1da0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1db0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1dc0: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
1dd0: 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b  alize()..      {
1de0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1e10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1e20: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72  E: If the "No_Pr
1e30: 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76  eLoadSQLite" env
1e40: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
1e50: 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20  e is set (to..  
1e60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1e70: 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70   anything), skip
1e80: 20 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c   all our special
1e90: 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79   code and simply
1ea0: 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20   return...      
1eb0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1ec0: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
1ed0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
1ee0: 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 50 72 65  Variable("No_Pre
1ef0: 4c 6f 61 64 53 51 4c 69 74 65 22 29 20 21 3d 20  LoadSQLite") != 
1f00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1f10: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
1f20: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1f30: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1f40: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1f70: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
1f80: 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69  ake sure this li
1f90: 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66  st is updated if
1fa0: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a   the supported..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1fd0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1fe0: 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66  mes and/or platf
1ff0: 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  orm names..     
2000: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2010: 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20    changes...    
2020: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2030: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2040: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2050: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
2060: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2070: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
20b0: 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f  e the map of pro
20c0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
20d0: 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  ure names..     
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
20f0: 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72        to platfor
2100: 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20  m names using a 
2110: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
2120: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
2130: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2140: 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20      comparer... 
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2170: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2180: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2190: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
21b0: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
21c0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a  ring, string>(..
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
21f0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
2200: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a  IgnoreCase);....
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2230: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2240: 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20   Setup the list 
2250: 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  of platform name
2260: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2270: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2280: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2290: 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63  e supported proc
22a0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
22b0: 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  res...          
22c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
22e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
22f0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
2300: 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29  ("x86", "Win32")
2310: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2320: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
2330: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
2340: 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c  rms.Add("AMD64",
2350: 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20   "x64");..      
2360: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
2370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2380: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
2390: 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22  IA64", "Itanium"
23a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23b0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
23c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
23d0: 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20  orms.Add("ARM", 
23e0: 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20  "WinCE");..     
23f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2420: 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62   BUGBUG: What ab
2430: 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63  out other applic
2440: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a  ation domains?..
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2470: 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  if (_SQLiteModul
2480: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2490: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24a0: 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64 75       _SQLiteModu
24b0: 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c 69  le = PreLoadSQLi
24c0: 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c 6c  teDll(null, null
24d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
24e0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
24f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2540: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
2560: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2570: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
2580: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
2590: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
25a0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
25b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
25c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
25d0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25e0: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
25f0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
2600: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
2610: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
2620: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
2630: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2640: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
2650: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2660: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2670: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2680: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
2690: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  y()..      {..#i
26a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
26e0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
26f0: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
2700: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
2710: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
2720: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
2730: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
2740: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
2750: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
2760: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2770: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
2780: 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e  ectory = Environ
2790: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
27a0: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
27c0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
27d0: 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20  irectory");.... 
27e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
27f0: 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
2800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2810: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
2820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
2840: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
2850: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
2860: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
2870: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
2880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2890: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
28a0: 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
28b0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
28c0: 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  he directory..  
28d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
28f0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
2900: 69 6e 67 20 61 73 73 65 6d 62 6c 79 20 28 69 2e  ing assembly (i.
2910: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
2920: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
2930: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
2940: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
2950: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62 61 73  ation domain bas
2960: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
2970: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e        directory.
2980: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
29a0: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
29b0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
29c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29d0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
29e0: 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
29f0: 65 63 74 6f 72 79 22 29 20 21 3d 20 6e 75 6c 6c  ectory") != null
2a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a40: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
2a50: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2a60: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
2a70: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a90: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
2aa0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2ab0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad0: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
2ae0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
2af0: 61 6d 65 28 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  ame(assembly.Loc
2b00: 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ation);....     
2b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b20: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
2b30: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
2b40: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b60: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
2b70: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
2b80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ba0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
2be0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2c00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
2c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
2c20: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
2c30: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
2c40: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
2c50: 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
2c60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
2c70: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
2c80: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
2c90: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ca0: 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
2cb0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
2cc0: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
2cd0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ce0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
2cf0: 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
2d00: 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
2d10: 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
2d20: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
2d30: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
2d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d50: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2d60: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
2d70: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
2d80: 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
2d90: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2da0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61    if (assemblyNa
2db0: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
2dc0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2dd0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
2de0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e00: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
2e10: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
2e20: 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  e(assemblyName.C
2e30: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
2e40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e50: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2e60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e70: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
2e80: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  g...          }.
2e90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
2ea0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69  urn null;..#endi
2eb0: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
2ec0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2f10: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f20: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
2f30: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
2f40: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
2f50: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
2f60: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
2f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
2f80: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
2f90: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
2fa0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2fb0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2fc0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
2fd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
2fe0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
2ff0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
3000: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
3010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3020: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3030: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3040: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
3050: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
3060: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
3070: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
3080: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
3090: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
30a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
30b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
30c0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
30d0: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
30e0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
30f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
3100: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
3110: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3120: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
3130: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
3140: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3160: 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61    PlatformID pla
3170: 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f  tformId = Enviro
3180: 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e  nment.OSVersion.
3190: 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20  Platform;....   
31a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31b0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
31c0: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29  atformID.Win32S)
31d0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
31e0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
31f0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
3200: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
3210: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
3220: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
3230: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
3240: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3260: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
3270: 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d  tformID.WinCE)).
3280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a0: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
32b0: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
32c0: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
32f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
3300: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3330: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3340: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
3350: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3380: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
33a0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
33b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3420: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
3430: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3440: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
3450: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
3460: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
3470: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
3480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3490: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
34a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
34b0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
34c0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
34d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
34e0: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
34f0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
3500: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
3510: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
3520: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3530: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3540: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
3550: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3560: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
3570: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3580: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3590: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
35b0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
35c0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
35d0: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
35e0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
35f0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
3600: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
3610: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
3620: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3630: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
3640: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
3650: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
3660: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3670: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
3680: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
3690: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
36a0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
36b0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
36c0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
36d0: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
36e0: 74 65 63 74 75 72 65 22 29 3b 0d 0a 0d 0a 20 20  tecture");....  
36f0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3700: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3710: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
3720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3730: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
3740: 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
3750: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3760: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
3770: 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
3780: 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
3790: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
37a0: 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
37b0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
37c0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50  onmentVariable(P
37d0: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
37e0: 43 54 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a  CTURE);..#else..
37f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3800: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3810: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
3820: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
3830: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
3840: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
3850: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
3860: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
3870: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
3880: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
3890: 20 75 73 20 77 69 74 68 0d 0a 20 20 20 20 20 20   us with..      
38a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
38b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
38c0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
38d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
38e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
38f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3900: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3910: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
3920: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
3930: 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
3940: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 6c  ction will be pl
3950: 61 63 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  aced..          
3960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72      //       her
3970: 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f  e.  Only the pro
3980: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3990: 75 72 65 20 66 69 65 6c 64 20 69 73 20 75 73 65  ure field is use
39a0: 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 20 20  d by..          
39b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
39c0: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
39d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
39e0: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45             SYSTE
39f0: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
3a00: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
3a10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3a20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
3a30: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
3a40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
3a50: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 20 66  P/Invoke, thus f
3a60: 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  illing..        
3a70: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
3a80: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
3ab0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
3ac0: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
3ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3af0: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
3b00: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
3b10: 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
3b20: 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b50: 72 65 74 75 72 6e 20 73 79 73 74 65 6d 49 6e 66  return systemInf
3b60: 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
3b70: 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
3b80: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
3b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
3ba0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3bc0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
3bd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3be0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3bf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
3c00: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74  pon failure, ret
3c10: 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72  urn an empty str
3c20: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3c30: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
3c40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
3c50: 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  y;..#endif..    
3c60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3cc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3cd0: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
3ce0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3cf0: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
3d00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
3d10: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
3d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3d40: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
3d50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
3d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
3d70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3d80: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
3d90: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
3da0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
3db0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3de0: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
3df0: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
3e00: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
3e10: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
3e20: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
3e30: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
3e40: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
3e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3e60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3e70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
3e80: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
3e90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
3ea0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
3eb0: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  tecture..       
3ec0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
3ed0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
3ee0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
3ef0: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
3f00: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
3f10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3f20: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
3f30: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3f40: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3f60: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3f70: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
3f80: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
3f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fa0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3fc0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
3fd0: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
3fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
4000: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
4010: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4030: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4040: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
4050: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
4060: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4080: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
4090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
40a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
40b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
40c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
40d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4130: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4140: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
4150: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
4160: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
4170: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
4180: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
4190: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
41a0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
41b0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
41c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
41d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
41e0: 20 6e 61 6d 65 3d 22 64 69 72 65 63 74 6f 72 79   name="directory
41f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
4200: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4210: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
4220: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
4230: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
4240: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
4250: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
4260: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
4270: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
4280: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
4290: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
42a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
42b0: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
42c0: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
42d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
42e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
42f0: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
4300: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
4310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
4320: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
4330: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
4340: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
4350: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
4360: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
4370: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
4380: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
4390: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
43a0: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
43b0: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
43c0: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
43d0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
43e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
43f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
4400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
4420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
4430: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
4440: 4c 69 62 72 61 72 79 20 2d 4f 52 2d 20 49 6e 74  Library -OR- Int
4450: 50 74 72 2e 5a 65 72 6f 0d 0a 20 20 20 20 20 20  Ptr.Zero..      
4460: 2f 2f 2f 20 69 66 20 74 68 65 20 6c 6f 61 64 69  /// if the loadi
4470: 6e 67 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79  ng fails for any
4480: 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20   reason...      
4490: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
44a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
44b0: 61 74 69 63 20 49 6e 74 50 74 72 20 50 72 65 4c  atic IntPtr PreL
44c0: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
44d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
44e0: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
44f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
4500: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4510: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
4520: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4530: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4540: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
4550: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
4560: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
4570: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
4580: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ult...          
4590: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
45a0: 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e   (directory == n
45b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
45c0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
45d0: 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
45e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
45f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
4600: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
4610: 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
4620: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
4630: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
4640: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4650: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
4660: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
4670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4680: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
4690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
46a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
46b0: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
46c0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
46d0: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
46e0: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
46f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4700: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
4710: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
4720: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
4730: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
4740: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
4750: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
4760: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
4770: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c        SQLITE_DLL
4780: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
4790: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
47a0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
47b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
47c0: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
47d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
47e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
47f0: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
4800: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
4810: 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
4820: 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
4830: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4840: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
4850: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4860: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
4870: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
4880: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
4890: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
48a0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
48b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
48c0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
48d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
48e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
48f0: 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
4900: 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
4910: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
4920: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
4930: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4940: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
4950: 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
4960: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4970: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
4980: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
4990: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
49a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
49b0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
49c0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
49d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
49e0: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
49f0: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
4a00: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
4a10: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
4a20: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
4a30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
4a40: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
4a50: 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e  llFileName(Path.
4a60: 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d  Combine(Path.Com
4a70: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d  bine(directory,.
4a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
4a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4aa0: 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  ture), SQLITE_DL
4ab0: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
4ac0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4ad0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
4ae0: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
4af0: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
4b00: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
4b10: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
4b20: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
4b30: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
4b40: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
4b50: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
4b60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4b70: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
4b80: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
4b90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4ba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4bb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4bc0: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
4bd0: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
4be0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4bf0: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
4c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4c10: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4c40: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
4c50: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
4c60: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
4c70: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4c90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4ca0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
4cb0: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
4cc0: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
4cd0: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
4ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4cf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4d00: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
4d10: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4d30: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
4d40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
4d50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4d60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
4d70: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
4d80: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
4d90: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
4da0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
4db0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
4dc0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
4dd0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
4de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4df0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4e00: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
4e10: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
4e20: 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43  h.Combine(Path.C
4e30: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
4e40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4e50: 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 4e 61 6d       platformNam
4e60: 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29  e), SQLITE_DLL))
4e70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4e80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4e90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
4ea0: 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
4eb0: 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
4ec0: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
4ed0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4ee0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
4ef0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
4f00: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
4f30: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
4f40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4f50: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
4f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4f80: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
4f90: 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
4fa0: 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
4fb0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4fd0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
4fe0: 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
4ff0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 23             //..#
5000: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5010: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
5020: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
5030: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
5040: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
5050: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5060: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
5070: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c      "Trying to l
50a0: 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74  oad native SQLit
50b0: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
50c0: 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  "...",..        
50d0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
50e0: 6d 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  me));..#endif...
50f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5100: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5110: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
5120: 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
5130: 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
5140: 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
5150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5160: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
5170: 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
5180: 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
5190: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
51a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51b0: 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
51c0: 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d  w an exception..
51d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
51e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
51f0: 20 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72   return LoadLibr
5200: 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
5210: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
5220: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
5230: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
5240: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
5250: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
5260: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
5270: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
5280: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
5290: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
52a0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
52b0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
52c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
52d0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
52e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
52f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5310: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
5320: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
5330: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5360: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
5370: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
5380: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
5390: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
53a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68  // NOTE: Show wh
53d0: 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f  ere we failed to
53e0: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
53f0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
5400: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5410: 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d      library from
5420: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
5430: 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65  Win32 error code
5440: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
5450: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5460: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72   exception infor
5470: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
5480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
54b0: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
54c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
54d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
54e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
54f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
5500: 20 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65            "Faile
5510: 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
5520: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
5530: 5c 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20  \"{0}\" " +..   
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f     "(getLastErro
5560: 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
5570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5580: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
5590: 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
55a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
55b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
55d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
55e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
55f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
5600: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
5610: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
5620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5630: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5640: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
5650: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
5660: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
5670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
56d0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
56e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
56f0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
5700: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
5710: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
5720: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
5730: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
5740: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
5750: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
5760: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
5770: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
5780: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
5790: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
57a0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
57b0: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
57c0: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
57d0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
57e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
57f0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
5800: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
5810: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
5820: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
5830: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
5840: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
5850: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
5860: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
5870: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
5880: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
5890: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
58a0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
58b0: 65 72 6f 70 2e 30 38 37 2e 64 6c 6c 22 3b 0d 0a  erop.087.dll";..
58c0: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
58d0: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
58e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
58f0: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
5900: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
5910: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
5920: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
5930: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
5940: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
5950: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
5960: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
5970: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
5980: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
5990: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
59a0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
59b0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
59c0: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
59d0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
59e0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
59f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
5a00: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
5a10: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
5a20: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
5a30: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
5a40: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
5a50: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
5a60: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
5a70: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
5a80: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
5a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
5aa0: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
5ab0: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
5ac0: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
5ad0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
5ae0: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
5af0: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
5b00: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
5b10: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
5b20: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
5b30: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
5b40: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
5b50: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
5b60: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
5b70: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
5b80: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
5b90: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
5ba0: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
5bb0: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
5bc0: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
5bd0: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
5be0: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
5bf0: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
5c00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
5c10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5c20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5c40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5c50: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
5c60: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
5c70: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5c80: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5c90: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5ca0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5cb0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5cc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5cd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5ce0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
5cf0: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
5d00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5d10: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5d20: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5d30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5d40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5d50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5d60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5d70: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
5d80: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
5d90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
5da0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
5db0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
5dc0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5dd0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
5de0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5df0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5e00: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
5e10: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
5e20: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
5e30: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
5e40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5e80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
5e90: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
5ea0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
5eb0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
5ec0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
5ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5ee0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5ef0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5f00: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5f10: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
5f20: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5f30: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5f40: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5f50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5f60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5f70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5f80: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5f90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
5fa0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
5fb0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5fc0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5fd0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5fe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5ff0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6000: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6010: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6020: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
6030: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
6040: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
6050: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
6060: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6070: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6080: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6090: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
60a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
60b0: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
60c0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
60d0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
60e0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
60f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6100: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6110: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6120: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6130: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
6140: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
6150: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6160: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6170: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
6190: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
61a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
61b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
61c0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
61d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
61e0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
61f0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
6200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6210: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6230: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6240: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6250: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
6260: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6270: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
6280: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
6290: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
62a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
62b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
62c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
62d0: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
62e0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
62f0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
6300: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
6310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6320: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6330: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6340: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6350: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
6360: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74  p(IntPtr db, out
6370: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
6380: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6390: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
63a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
63b0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
63c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
63d0: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
63e0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
63f0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
6400: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
6410: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
6420: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
6430: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
6440: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6450: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6460: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6470: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6480: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
6490: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
64a0: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
64b0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
64c0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
64d0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
64e0: 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Name, out IntPtr
64f0: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75   ptrDataType, ou
6500: 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  t IntPtr ptrColl
6510: 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74  Seq, out int not
6520: 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72  Null, out int pr
6530: 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e  imaryKey, out in
6540: 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69  t autoInc, out i
6550: 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e  nt dtLen, out in
6560: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
6570: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6580: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
6590: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
65a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
65b0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
65c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
65d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
65e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
65f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6620: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
6630: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
6640: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
6650: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
6660: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6670: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
6680: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6690: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c   int sqlite3_mal
66a0: 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70  loc_size_interop
66b0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
66c0: 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a  if INTEROP_LOG..
66d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
66e0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
66f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6700: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
6710: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6720: 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72  config_log_inter
6730: 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  op();..#endif..#
6740: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
6750: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
6760: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6770: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
6780: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
6790: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
67a0: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
67b0: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
67c0: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
67d0: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
67e0: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
67f0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
6800: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
6810: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
6820: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
6830: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
6840: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
6850: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6860: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6870: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6880: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
6890: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
68a0: 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
68b0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
68c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
68d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
68e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
68f0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
6900: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
6910: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
6920: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
6930: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
6940: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
6950: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
6960: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
6970: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
6980: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
6990: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
69a0: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
69b0: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
69c0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
69d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
69e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
69f0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
6a00: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6a10: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
6a20: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
6a30: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
6a40: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6a50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6a60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
6a70: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
6a80: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
6a90: 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
6aa0: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
6ab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6ac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6ad0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6ae0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6af0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
6b00: 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
6b10: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
6b20: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
6b30: 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49  num flags, out I
6b40: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
6b50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6b60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6b70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6b80: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
6b90: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
6ba0: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
6bb0: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
6bc0: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
6bd0: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74  sEnum flags, out
6be0: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
6bf0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6c00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
6c10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6c20: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
6c30: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6c40: 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
6c50: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
6c60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6c70: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
6c80: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6c90: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
6ca0: 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
6cb0: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
6cc0: 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
6cd0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
6ce0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6cf0: 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
6d00: 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
6d10: 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
6d20: 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
6d30: 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
6d40: 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
6d50: 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
6d60: 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
6d70: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
6d80: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6d90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6da0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6db0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6dc0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6dd0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6de0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6df0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6e00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6e10: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6e20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6e30: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6e40: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
6e50: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
6e60: 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
6e70: 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
6e80: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6e90: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6ea0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6eb0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6ec0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6ed0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6ee0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6ef0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6f00: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6f10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6f20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
6f30: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
6f40: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
6f50: 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
6f60: 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
6f70: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6f80: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6f90: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6fa0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6fb0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6fc0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6fd0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6fe0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6ff0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7000: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7010: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7020: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
7030: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
7040: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
7050: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
7060: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
7070: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
7080: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
7090: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
70a0: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
70b0: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
70c0: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
70d0: 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
70e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
70f0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7100: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7110: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7120: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7130: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7140: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7150: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7160: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7170: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7180: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
7190: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
71a0: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
71b0: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
71c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
71d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
71e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
71f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7200: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7210: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7220: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7240: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7250: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7260: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
7270: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
7280: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
7290: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
72a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
72b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
72c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
72d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
72e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
72f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7300: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7310: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7320: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7330: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7340: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7350: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
7360: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
7370: 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
7380: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7390: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
73a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
73b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
73c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
73d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
73e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
73f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7410: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7420: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7430: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7440: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
7450: 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
7460: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7470: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7480: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7490: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
74a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
74b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
74c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
74d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
74e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
74f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7500: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7510: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7520: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7530: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
7540: 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
7550: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
7560: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7570: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7580: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7590: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
75a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
75b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
75c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
75d0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
75e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
75f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7600: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7610: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
7620: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
7630: 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
7640: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
7650: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
7660: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7670: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7680: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7690: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
76a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
76b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
76c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
76d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
76e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
76f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7700: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7710: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
7720: 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
7730: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7740: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7750: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7760: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7770: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7780: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7790: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
77a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
77b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
77c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
77d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
77e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
77f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7800: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
7810: 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
7820: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7830: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7840: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7850: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7860: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7870: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7880: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7890: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
78a0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
78b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
78c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
78d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
78e0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
78f0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
7900: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7910: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7920: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7930: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7940: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7950: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7960: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7970: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7980: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7990: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
79a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
79b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
79c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
79d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
79e0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
79f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7a00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7a10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7a20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7a30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7a40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7a50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7a60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7a70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7a80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7a90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7aa0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7ab0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7ac0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
7ad0: 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
7ae0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
7af0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7b00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7b10: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7b20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7b30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7b40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7b50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
7b60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
7b70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7b80: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7b90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7ba0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
7bb0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
7bc0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
7bd0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7be0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7bf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7c00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7c10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7c20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7c30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7c40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7c50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7c60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7c70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7c80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7c90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7ca0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
7cb0: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
7cc0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7cd0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7ce0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7cf0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7d00: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7d10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7d20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7d30: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7d40: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7d50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7d60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7d70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7d80: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7d90: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
7da0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
7db0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7dc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7dd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7de0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7df0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7e10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7e20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7e30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7e40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7e50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7e60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7e70: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7e80: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
7e90: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7ea0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7eb0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7ec0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7ed0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7ee0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7ef0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7f00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7f10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7f20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7f30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7f40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7f50: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
7f60: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
7f70: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
7f80: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
7f90: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7fa0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7fb0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7fc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7fd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7fe0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7ff0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8000: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8010: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8020: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8030: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8040: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
8050: 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
8060: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
8070: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8080: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8090: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
80a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
80b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
80c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
80d0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
80e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
80f0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8100: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8110: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8120: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8130: 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
8140: 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
8150: 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f  l, int nBytes, o
8160: 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ut IntPtr stmt, 
8170: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52 65  out IntPtr ptrRe
8180: 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
8190: 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
81a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
81b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
81c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
81d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
81e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
81f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8200: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8210: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8220: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8230: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8240: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8250: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8260: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
8270: 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
8280: 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
8290: 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72  ytes, out IntPtr
82a0: 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74   stmt, out IntPt
82b0: 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
82c0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
82d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
82e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
82f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8300: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8310: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8320: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8330: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8340: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8350: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8360: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8370: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8380: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8390: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
83a0: 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
83b0: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
83c0: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
83d0: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
83e0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
83f0: 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e  DataType, out In
8400: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
8410: 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   out int notNull
8420: 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72  , out int primar
8430: 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75  yKey, out int au
8440: 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
8450: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8460: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8470: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8480: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8490: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
84a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
84b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
84c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
84d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
84e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
84f0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
8500: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
8510: 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
8520: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8530: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8540: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8550: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8560: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8570: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8580: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8590: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
85a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
85b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
85c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
85d0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
85e0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
85f0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
8600: 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
8610: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
8620: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8630: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
8640: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
8650: 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
8660: 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
8670: 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
8680: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
8690: 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
86a0: 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
86b0: 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
86c0: 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
86d0: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
86e0: 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
86f0: 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
8700: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
8710: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
8720: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8730: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8740: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8750: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
8760: 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
8770: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
8780: 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e 74 20 74  ntext, out int t
8790: 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e 63  ype, out int enc
87a0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
87b0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
87c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
87d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
87e0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
87f0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
8800: 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
8810: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
8820: 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
8830: 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
8840: 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
8850: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8860: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8870: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8880: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8890: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
88a0: 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
88b0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
88c0: 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
88d0: 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64 29   out long rowid)
88e0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
88f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8900: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8910: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
8920: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
8930: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
8940: 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
8950: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
8960: 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
8970: 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
8980: 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f  [] ColumnName, o
8990: 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ut int sortOrder
89a0: 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f  , out int onErro
89b0: 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 43 6f  r, out IntPtr Co
89c0: 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74  llation, out int
89d0: 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
89e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
89f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
8a00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8a10: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
8a20: 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65  e3_resetall_inte
8a30: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
8a40: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8a50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8a60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8a70: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
8a80: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72  qlite3_table_cur
8a90: 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  sor_interop(IntP
8aa0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c  tr stmt, int db,
8ab0: 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61   int tableRootPa
8ac0: 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  ge);....#endif..
8ad0: 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
8ae0: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
8af0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
8b00: 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c  Standard API cal
8b10: 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73  ls global across
8b20: 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72   versions.  Ther
8b30: 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74  e are a few inst
8b40: 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70  ances of interop
8b50: 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73   calls..    // s
8b60: 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65  cattered in here
8b70: 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f  , but they are o
8b80: 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20  nly active when 
8b90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8ba0: 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63  FRAMEWORK is dec
8bb0: 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67  lared...    #reg
8bc0: 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c  ion standard sql
8bd0: 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23  ite api calls..#
8be0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8bf0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8c00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8c10: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8c20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8c30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8c40: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8c50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8c60: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8c70: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8c80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8c90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8ca0: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c  sqlite3_enable_l
8cb0: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
8cc0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
8cd0: 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d  b, int enable);.
8ce0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8cf0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8d00: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8d10: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8d20: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8d30: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8d40: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8d50: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8d60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8d70: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8d80: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8d90: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
8da0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64  ode sqlite3_load
8db0: 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20  _extension(..   
8dc0: 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
8dd0: 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c  byte[] fileName,
8de0: 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65   byte[] procName
8df0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72  , ref IntPtr pEr
8e00: 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ror);....#if !PL
8e10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8e20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8e30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8e40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8e50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8e60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
8e70: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
8e80: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
8e90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8ea0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8eb0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
8ec0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
8ed0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8ee0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8ef0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8f00: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
8f10: 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
8f20: 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
8f30: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
8f40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8f50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8f60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8f70: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8f80: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8f90: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8fa0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8fb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8fc0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8fd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8fe0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
8ff0: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
9000: 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ion();....#if !P
9010: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9020: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9030: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9040: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9050: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9060: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9070: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9080: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9090: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
90a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
90b0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
90c0: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
90d0: 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23  n_number();....#
90e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
90f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9100: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9110: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9130: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9140: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9150: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9160: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9170: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9180: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9190: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
91a0: 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69  ourceid();....#i
91b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
91c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
91d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
91e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
91f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9200: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9210: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9220: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9230: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
9240: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9250: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
9260: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
9270: 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
9280: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9290: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
92a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
92b0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
92c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
92d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
92e0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
92f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9300: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9310: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9320: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9330: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
9340: 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
9350: 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
9360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9370: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9380: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9390: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
93a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
93b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
93c0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
93d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
93e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
93f0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9400: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
9410: 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
9420: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
9430: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9440: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9450: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9460: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9470: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9480: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9490: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
94a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
94b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
94c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
94d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
94e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
94f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
9500: 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
9510: 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64  me, out IntPtr d
9520: 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
9530: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e  gsEnum flags, In
9540: 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69  tPtr vfs);....#i
9550: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9560: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9570: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9580: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9590: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
95a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
95b0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
95c0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
95d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
95e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
95f0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
9600: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
9610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9620: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9630: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
9640: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
9650: 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  n16(string fileN
9660: 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ame, out IntPtr 
9670: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
9680: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9690: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
96a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
96b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
96c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
96d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
96e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
96f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9700: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9710: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9720: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
9730: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
9740: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
9750: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9760: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9770: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9780: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9790: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
97a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
97b0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
97c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
97d0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
97e0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
97f0: 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  id(IntPtr db);..
9800: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9810: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9820: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9830: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9840: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9850: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9860: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9870: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9880: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9890: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
98a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
98b0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
98c0: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49  qlite3_changes(I
98d0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
98e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
98f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9910: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9920: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9930: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9940: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
9950: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9960: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
9970: 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a  memory_used();..
9980: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9990: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
99a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
99b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
99c0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
99d0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
99e0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
99f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
9a00: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
9a10: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
9a20: 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74  ry_highwater(int
9a30: 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65   resetFlag);..#e
9a40: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
9a50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9a60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9a70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9a80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9a90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9aa0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9ab0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9ac0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9ad0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9ae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9af0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9b00: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9b10: 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
9b20: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9b30: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9b40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9b50: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9b60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9b70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9b80: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9b90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9ba0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9bb0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9bc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9bd0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
9be0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
9bf0: 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c  meout(IntPtr db,
9c00: 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66   int ms);....#if
9c10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9c20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9c30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9c40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9c50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9c60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9c70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9c80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9c90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9ca0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9cb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9cc0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9cd0: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
9ce0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
9cf0: 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76   index, Byte[] v
9d00: 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
9d10: 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65   IntPtr nTransie
9d20: 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nt);....#if !PLA
9d30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9d40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9d50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9d60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9d70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9d80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9d90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9da0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9db0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9dc0: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9dd0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9de0: 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
9df0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
9e00: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9e10: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9e20: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9e30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9e40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9e50: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9e60: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9e70: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9e80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9ea0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9eb0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
9ec0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
9ed0: 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
9ee0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74  , int index, int
9ef0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
9f00: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
9f10: 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73   This really jus
9f20: 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33  t calls "sqlite3
9f30: 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65  _bind_int"; howe
9f40: 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
9f50: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
9f60: 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
9f70: 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
9f80: 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e  gned (32-bit) in
9f90: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
9fa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9fb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9fc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9fd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
9fe0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
9ff0: 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c  _bind_int", Call
a000: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a010: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a020: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a030: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a040: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
a050: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
a060: 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a  e3_bind_int")]..
a070: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
a080: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a090: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
a0a0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
a0b0: 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  uint(IntPtr stmt
a0c0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e  , int index, uin
a0d0: 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
a0e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a0f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a100: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a110: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a120: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a130: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a140: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
a150: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a160: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
a170: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
a180: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
a190: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e  , int index, lon
a1a0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
a1b0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
a1c0: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
a1d0: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
a1e0: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
a1f0: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
a200: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
a210: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
a220: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
a230: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
a240: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
a250: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
a260: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a270: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a280: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a290: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
a2a0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
a2b0: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
a2c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a2d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a2e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
a2f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a300: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a310: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a320: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
a330: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
a340: 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
a350: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
a360: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a370: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a380: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a390: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a3a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a3b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a3c0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a3d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a3e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a3f0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a400: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a410: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a420: 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28  lite3_bind_null(
a430: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
a440: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
a450: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a460: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a470: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a480: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a490: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a4a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a4b0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a4c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a4d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a4e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a4f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
a500: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
a510: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49  ite3_bind_text(I
a520: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
a530: 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61  index, byte[] va
a540: 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
a550: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
a560: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a570: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a580: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a590: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a5a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a5b0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a5c0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a5d0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a5e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a5f0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a600: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a610: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
a620: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
a630: 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  r_count(IntPtr s
a640: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
a650: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a660: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a670: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a680: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a690: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a6a0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a6b0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
a6c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a6d0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
a6e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a6f0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
a700: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
a710: 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74  eter_index(IntPt
a720: 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73  r stmt, byte[] s
a730: 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  trName);....#if 
a740: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a750: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a760: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a770: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a780: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a790: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a7a0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a7b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a7c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a7d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a7e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
a7f0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
a800: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
a810: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
a820: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a830: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a840: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a850: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a860: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a870: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a880: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a890: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a8a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a8b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a8c0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
a8d0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
a8e0: 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74  step(IntPtr stmt
a8f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a900: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a910: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a920: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a930: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a940: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a950: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a960: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a970: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
a980: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
a990: 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
a9a0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
a9b0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
a9c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a9d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a9e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a9f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
aa00: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
aa10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
aa20: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
aa30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
aa40: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
aa50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
aa60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
aa70: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
aa80: 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
aa90: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
aaa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
aab0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
aac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
aad0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
aae0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
aaf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ab00: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
ab10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ab20: 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
ab30: 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49  3_column_int64(I
ab40: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ab50: 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d  index);..#endif.
ab60: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ab70: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ab80: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ab90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
aba0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
abb0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
abc0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
abd0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
abe0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
abf0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ac00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ac10: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ac20: 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49  e3_column_blob(I
ac30: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ac40: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
ac50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ac60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ac70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ac80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ac90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
aca0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
acb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
acc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
acd0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ace0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
acf0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
ad00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
ad10: 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74  ytes(IntPtr stmt
ad20: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
ad30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ad40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ad50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ad60: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ad70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ad80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ad90: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ada0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
adb0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
adc0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
add0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ade0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
adf0: 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74  lumn_bytes16(Int
ae00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
ae10: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
ae20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ae30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ae40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ae50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ae60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ae70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ae80: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ae90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
aea0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
aeb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
aec0: 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
aed0: 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63  finity sqlite3_c
aee0: 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74  olumn_type(IntPt
aef0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
af00: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
af10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
af20: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
af30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
af40: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
af50: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
af60: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
af70: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
af80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
af90: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
afa0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
afb0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
afc0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
afd0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
afe0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
aff0: 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
b000: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
b010: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c  User, SQLiteColl
b020: 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a  ation func);....
b030: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
b040: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
b050: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b060: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
b070: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b080: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b090: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
b0a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b0b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
b0c0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
b0d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b0e0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67   int sqlite3_agg
b0f0: 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74  regate_count(Int
b100: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
b110: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b120: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b130: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b140: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b150: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b160: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b170: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b180: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b190: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b1a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b1b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b1c0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b1d0: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50  _value_blob(IntP
b1e0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
b1f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b200: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b210: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b220: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b230: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b240: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b250: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b260: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b270: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b280: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b290: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
b2a0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
b2b0: 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  es(IntPtr p);...
b2c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b2d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b2e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b2f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b300: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b310: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b320: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b330: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b340: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b350: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b360: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b370: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
b380: 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50  lue_bytes16(IntP
b390: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
b3a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b3b0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b3c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b3d0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b3e0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b3f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b400: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b410: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64   static extern d
b420: 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61  ouble sqlite3_va
b430: 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  lue_double(IntPt
b440: 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  r p);..#endif...
b450: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b460: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b470: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b480: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b490: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b4a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b4b0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b4c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b4d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b4e0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b4f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b500: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
b510: 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70  lue_int(IntPtr p
b520: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b530: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b540: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b550: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b560: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b570: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b580: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b590: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b5a0: 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
b5b0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
b5c0: 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t64(IntPtr p);..
b5d0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
b5e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b5f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b600: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b610: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b620: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b630: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b640: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b650: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b660: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b670: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b680: 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
b690: 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
b6a0: 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74  value_type(IntPt
b6b0: 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
b6c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b6d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b6e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b6f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b700: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b710: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b720: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
b730: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b740: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
b750: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b760: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
b770: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c  qlite3_result_bl
b780: 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
b790: 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
b7a0: 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
b7b0: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
b7c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b7d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b7e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b7f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b800: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b810: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b820: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
b830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b840: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
b850: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
b860: 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  le(IntPtr contex
b870: 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  t, double value)
b880: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
b890: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b8a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b8b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b8c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b8d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b8e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b8f0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b910: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b920: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b930: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b940: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b950: 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63  t_error(IntPtr c
b960: 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73  ontext, byte[] s
b970: 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29  trErr, int nLen)
b980: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b990: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b9a0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b9b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b9c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b9d0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b9e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b9f0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ba00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ba10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ba20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ba30: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
ba40: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
ba50: 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  code(IntPtr cont
ba60: 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72  ext, SQLiteError
ba70: 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  Code value);....
ba80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ba90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
baa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bab0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
bac0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
bad0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
bae0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
baf0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bb00: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
bb10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bb20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bb30: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
bb40: 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69  sult_error_toobi
bb50: 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  g(IntPtr context
bb60: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
bb70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bb80: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bb90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bba0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bbb0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bbc0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bbd0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bbe0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bbf0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bc00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bc10: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
bc20: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
bc30: 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f  _nomem(IntPtr co
bc40: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
bc50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
bc60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
bc70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bc80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
bc90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bca0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bcb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
bcc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bcd0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
bce0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bcf0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
bd00: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
bd10: 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e  value(IntPtr con
bd20: 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c  text, IntPtr val
bd30: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
bd40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bd50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bd60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bd70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bd80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bd90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bda0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bdb0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bdc0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bdd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bde0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
bdf0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
be00: 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  oblob(IntPtr con
be10: 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  text, int nLen);
be20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
be30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
be40: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
be50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
be60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
be70: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
be80: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
be90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
bea0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
beb0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
bec0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
bed0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
bee0: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74  3_result_int(Int
bef0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
bf00: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
bf10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bf20: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bf30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bf40: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
bf50: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
bf60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
bf70: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
bf80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bf90: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
bfa0: 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74  sult_int64(IntPt
bfb0: 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20  r context, long 
bfc0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
bfd0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
bfe0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
bff0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c000: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c010: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c020: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c030: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c040: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c050: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c060: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c070: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c080: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c090: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
c0a0: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
c0b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c0c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c0d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c0e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c0f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c100: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c110: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c120: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c130: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c140: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c150: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c160: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
c170: 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
c180: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
c190: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
c1a0: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
c1b0: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
c1c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c1d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c1e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c1f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c200: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c210: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c220: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c240: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c250: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c260: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c270: 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
c280: 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
c290: 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
c2a0: 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
c2b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c2c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c2d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c2e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c2f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c300: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c310: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
c320: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
c330: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c340: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c350: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
c360: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
c370: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c380: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c390: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
c3a0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
c3b0: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
c3c0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
c3d0: 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
c3e0: 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
c3f0: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
c400: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c410: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c420: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c430: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c440: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c450: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c460: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
c470: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
c480: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c490: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c4a0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
c4b0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
c4c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c4d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c4e0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c4f0: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
c500: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c510: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
c520: 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
c530: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c540: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c550: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c560: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c570: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c580: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c590: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
c5a0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
c5b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c5c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c5d0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
c5e0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
c5f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c600: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c610: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
c620: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
c630: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
c640: 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
c650: 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
c660: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
c670: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
c680: 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  DEC..#if !PLATFO
c690: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c6a0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c6b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c6c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c6d0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c6e0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c6f0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c700: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c710: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c720: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c730: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c740: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
c750: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
c760: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
c770: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
c780: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c790: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c7a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c7b0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c7c0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c7d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c7e0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c7f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c800: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c810: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c820: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c830: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c840: 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
c850: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
c860: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
c870: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
c880: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c890: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c8a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c8b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c8c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c8d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c8e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c8f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c900: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c910: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c920: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
c930: 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
c940: 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
c950: 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61  LiteUpdateCallba
c960: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
c970: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
c980: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c990: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c9a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c9b0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c9c0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c9d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c9e0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c9f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ca00: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ca10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ca20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ca30: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d  Ptr sqlite3_comm
ca40: 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  it_hook(IntPtr d
ca50: 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  b, SQLiteCommitC
ca60: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
ca70: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
ca80: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ca90: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
caa0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cab0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
cac0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cad0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cae0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
caf0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cb00: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
cb10: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
cb20: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cb30: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
cb40: 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62  _trace(IntPtr db
cb50: 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
cb60: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
cb70: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20  tr pvUser);.... 
cb80: 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
cb90: 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b  te3_config() tak
cba0: 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
cbb0: 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
cbc0: 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
cbd0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
cbe0: 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
cbf0: 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61  ssible calls tha
cc00: 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65  t we want to use
cc10: 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
cc20: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cc30: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cc40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
cc50: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
cc60: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
cc70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cc80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cc90: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cca0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
ccb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
ccc0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
ccd0: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
cce0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ccf0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cd00: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
cd10: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
cd20: 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66  _none(SQLiteConf
cd30: 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a  igOpsEnum op);..
cd40: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cd50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cd60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cd70: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
cd80: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
cd90: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
cda0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cdb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cdc0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
cdd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cde0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
cdf0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
ce00: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
ce10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ce20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ce30: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
ce40: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
ce50: 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  int(SQLiteConfig
ce60: 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
ce70: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
ce80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ce90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
cea0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ceb0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
cec0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
ced0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
cee0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cef0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cf00: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cf10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cf20: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
cf30: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
cf40: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
cf50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
cf60: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
cf70: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
cf80: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c  3_config_log(SQL
cf90: 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
cfa0: 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61   op, SQLiteLogCa
cfb0: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
cfc0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
cfd0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
cfe0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
cff0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d000: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d010: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d020: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d030: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d040: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d050: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d060: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d070: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d080: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d090: 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
d0a0: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
d0b0: 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
d0c0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
d0d0: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
d0e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d0f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d100: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d110: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d120: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d130: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d140: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
d150: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d160: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
d170: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d180: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d190: 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
d1a0: 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
d1b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d1c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d1d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d1e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d1f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d200: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d210: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d220: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d230: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d240: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d250: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d260: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d270: 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28  te3_db_filename(
d280: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
d290: 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  r dbName);....#i
d2a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d2b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d2c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d2d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d2e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d2f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d300: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d310: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d320: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d330: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d340: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d350: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
d360: 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
d370: 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
d380: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d390: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d3a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d3b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d3c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d3d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d3e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d3f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d410: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d420: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d430: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
d440: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
d450: 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
d460: 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
d470: 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
d480: 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f  ntPtr pvParam, o
d490: 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ut IntPtr errMsg
d4a0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
d4b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d4c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d4d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d4e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d4f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
d500: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
d510: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
d520: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d530: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
d540: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d550: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
d560: 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
d570: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
d580: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d590: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d5a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d5b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d5c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d5d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d5e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d5f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d600: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d610: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d620: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d630: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d640: 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
d650: 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
d660: 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
d670: 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  noff);....#if !P
d680: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d690: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d6a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d6b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d6c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d6d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d6e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d6f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d700: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d710: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d720: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d730: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d740: 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  e3_errcode(IntPt
d750: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
d760: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d770: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d780: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d790: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d7a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d7b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d7c0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d7d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d7e0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d7f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d800: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d810: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d820: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
d830: 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
d840: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d850: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d860: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d870: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d880: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d890: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d8a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d8b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d8c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d8d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d8e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d8f0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d900: 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65  e3_errstr(SQLite
d910: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f  ErrorCode rc); /
d920: 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a  * 3.7.15+ */....
d930: 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
d940: 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73  ite3_log() takes
d950: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
d960: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
d970: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
d980: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
d990: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
d9a0: 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
d9b0: 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
d9c0: 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e  y exposing a sin
d9d0: 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d  gle string, and.
d9e0: 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f  .    // depend o
d9f0: 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20  n the caller to 
da00: 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e  format the strin
da10: 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  g...#if !PLATFOR
da20: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
da30: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
da40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
da50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
da60: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
da70: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
da80: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
da90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
daa0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dab0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dac0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
dad0: 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f  3_log(SQLiteErro
dae0: 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20  rCode iErrCode, 
daf0: 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b  byte[] zFormat);
db00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
db10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
db20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
db30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
db40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
db50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
db60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
db70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
db80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
db90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dba0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dbb0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
dbc0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c  Code sqlite3_fil
dbd0: 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72  e_control(IntPtr
dbe0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e   db, byte[] zDbN
dbf0: 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
dc00: 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69  Ptr pArg);....#i
dc10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
dc20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dc30: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dc40: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
dc50: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
dc60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
dc70: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
dc80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
dc90: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
dca0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
dcb0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
dcc0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61  ntPtr sqlite3_ba
dcd0: 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72  ckup_init(IntPtr
dce0: 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20   destDb, byte[] 
dcf0: 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74  zDestName, IntPt
dd00: 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65  r sourceDb, byte
dd10: 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b  [] zSourceName);
dd20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
dd30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd40: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
dd50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
dd60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dd70: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
dd80: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
dd90: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
dda0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ddb0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ddc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ddd0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
dde0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
ddf0: 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20  kup_step(IntPtr 
de00: 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67  backup, int nPag
de10: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
de20: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
de30: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
de40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
de50: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
de60: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
de70: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
de80: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
de90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
dea0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
deb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
dec0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
ded0: 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69  te3_backup_remai
dee0: 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b  ning(IntPtr back
def0: 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
df00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
df10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
df20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
df30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
df40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
df50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
df60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
df70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
df80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
df90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dfa0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
dfb0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65  ite3_backup_page
dfc0: 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63  count(IntPtr bac
dfd0: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
dfe0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
dff0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e000: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e010: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e020: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e030: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e040: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e050: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e060: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e070: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e080: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
e090: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
e0a0: 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
e0b0: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
e0c0: 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
e0d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e0e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e100: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e110: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e130: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e140: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e150: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e170: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e180: 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
e190: 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
e1a0: 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
e1b0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e1c0: 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
e1d0: 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
e1e0: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
e1f0: 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
e200: 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
e210: 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
e220: 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
e230: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
e240: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
e250: 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
e260: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
e270: 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
e280: 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49  api calls..#if I
e290: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
e2a0: 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
e2b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e2c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e2d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e2e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e2f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e300: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e310: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e320: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e330: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e340: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e350: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
e360: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
e370: 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49  posable_module(I
e380: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
e390: 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74   name, ref sqlit
e3a0: 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  e3_module module
e3b0: 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  , IntPtr pClient
e3c0: 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f  Data, xDestroyMo
e3d0: 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d  dule xDestroy);.
e3e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e3f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e400: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e410: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e420: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e430: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
e440: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
e450: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e460: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e470: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
e480: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e490: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
e4a0: 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28  _dispose_module(
e4b0: 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ref sqlite3_modu
e4c0: 6c 65 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65  le pModule);..#e
e4d0: 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
e4e0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
e4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e530: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
e540: 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e  region sqlite in
e550: 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20  terop api calls 
e560: 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72  (.NET Compact Fr
e570: 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23  amework only)..#
e580: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
e590: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20  ACTFRAMEWORK && 
e5a0: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
e5b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e5c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
e5d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e5e0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
e5f0: 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
e600: 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70  rt_rowid_interop
e610: 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20  (IntPtr db, ref 
e620: 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a  long rowId);....
e630: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e640: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
e650: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e660: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
e670: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
e680: 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e  _interop(ref lon
e690: 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20  g bytes);....   
e6a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e6b0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
e6c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e6d0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
e6e0: 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
e6f0: 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72  er_interop(int r
e700: 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f  esetFlag, ref lo
e710: 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20  ng bytes);....  
e720: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e730: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
e740: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e750: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
e760: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
e770: 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  nd_double_intero
e780: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
e790: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
e7a0: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
e7b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e7c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
e7d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e7e0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
e7f0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
e800: 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72  bind_int64_inter
e810: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
e820: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
e830: 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
e840: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e850: 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
e860: 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
e870: 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72  bind_int64_inter
e880: 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  op")]..    inter
e890: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e8a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
e8b0: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
e8c0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
e8d0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
e8e0: 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20  ndex, ref ulong 
e8f0: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
e900: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e910: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
e920: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e930: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
e940: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e  column_double_in
e950: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
e960: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
e970: 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  t double value);
e980: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
e990: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e9a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e9b0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
e9c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
e9d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
e9e0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
e9f0: 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e 67 20 76  ndex, out long v
ea00: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
ea10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ea20: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
ea30: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ea40: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76  n void sqlite3_v
ea50: 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  alue_double_inte
ea60: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
ea70: 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  t double value);
ea80: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
ea90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
eaa0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
eab0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
eac0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
ead0: 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
eae0: 50 74 72 20 70 2c 20 6f 75 74 20 49 6e 74 36 34  Ptr p, out Int64
eaf0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
eb00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
eb10: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
eb20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
eb30: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
eb40: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69  _result_double_i
eb50: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
eb60: 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c  ntext, ref doubl
eb70: 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
eb80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
eb90: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
eba0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ebb0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
ebc0: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69  3_result_int64_i
ebd0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
ebe0: 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34  ntext, ref Int64
ebf0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
ec00: 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
ec10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ec20: 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
ec30: 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
ec40: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
ec50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
eca0: 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
ecb0: 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
ecc0: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
ecd0: 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
ece0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ecf0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
ed00: 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
ed10: 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
ed20: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ed30: 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
ed40: 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
ed50: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
ed60: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
ed70: 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
ed80: 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
ed90: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
eda0: 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61 72 73  ,..        [Mars
edb0: 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54  halAs(UnmanagedT
edc0: 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53 69 7a  ype.LPArray, Siz
edd0: 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20 32 29  eParamIndex = 2)
ede0: 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ]..        IntPt
edf0: 72 5b 5d 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  r[] argv,..     
ee00: 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
ee10: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
ee20: 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
ee30: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
ee90: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
eea0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
eeb0: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
eec0: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
eed0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
eee0: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
eef0: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
ef00: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
ef10: 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
ef20: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
ef30: 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
ef40: 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
ef50: 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
ef60: 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
ef70: 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
ef80: 72 72 61 79 2c 20 53 69 7a 65 50 61 72 61 6d 49  rray, SizeParamI
ef90: 6e 64 65 78 20 3d 20 32 29 5d 0d 0a 20 20 20 20  ndex = 2)]..    
efa0: 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67      IntPtr[] arg
efb0: 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
efc0: 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
efd0: 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
efe0: 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
eff0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
f000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f040: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
f050: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f060: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
f070: 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
f080: 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
f090: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f0a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
f0b0: 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
f0c0: 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
f0d0: 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
f0e0: 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
f0f0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
f100: 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Index..    );...
f110: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
f120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f160: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f170: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f180: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
f190: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
f1a0: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
f1b0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
f1c0: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
f1d0: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
f1e0: 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e  rrorCode xDiscon
f1f0: 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
f200: 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
f210: 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
f220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f260: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f270: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f280: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f290: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f2a0: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f2b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f2c0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f2d0: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f2e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f2f0: 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
f300: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
f310: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
f320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f370: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f380: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f390: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f3a0: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f3b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f3c0: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f3d0: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f3e0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
f3f0: 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
f400: 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
f410: 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
f420: 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
f430: 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
f480: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
f490: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f4a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
f4b0: 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
f4c0: 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
f4d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f4e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
f4f0: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
f500: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
f510: 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
f520: 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
f530: 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
f580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f590: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f5a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f5b0: 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
f5c0: 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
f5d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f5e0: 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
f5f0: 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
f600: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
f610: 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  e xFilter(..    
f620: 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
f630: 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  or,..        int
f640: 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20   idxNum,..      
f650: 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c    IntPtr idxStr,
f660: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
f670: 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61  gc,..        [Ma
f680: 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
f690: 64 54 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53  dType.LPArray, S
f6a0: 69 7a 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20  izeParamIndex = 
f6b0: 33 29 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  3)]..        Int
f6c0: 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20 20  Ptr[] argv..    
f6d0: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f720: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
f730: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f740: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
f750: 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
f760: 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
f770: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f780: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
f790: 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
f7a0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e  LiteErrorCode xN
f7b0: 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ext(..        In
f7c0: 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
f7d0: 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f820: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
f830: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f840: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f850: 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
f860: 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
f870: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f880: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f890: 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
f8a0: 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20  int xEof(..     
f8b0: 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
f8c0: 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
f8d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f920: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f930: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f940: 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
f950: 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
f960: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f970: 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
f980: 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
f990: 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
f9a0: 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
f9b0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
f9c0: 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
f9d0: 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
f9e0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e  ..        int in
f9f0: 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
fa00: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
fa50: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
fa60: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
fa70: 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
fa80: 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
fa90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
faa0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
fab0: 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
fac0: 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
fad0: 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a  orCode xRowId(..
fae0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
faf0: 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
fb00: 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
fb10: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
fb70: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
fb80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
fb90: 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
fba0: 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
fbb0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fbc0: 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
fbd0: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
fbe0: 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
fbf0: 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20  de xUpdate(..   
fc00: 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
fc10: 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
fc20: 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 5b  argc,..        [
fc30: 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
fc40: 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 2c  gedType.LPArray,
fc50: 20 53 69 7a 65 50 61 72 61 6d 49 6e 64 65 78 20   SizeParamIndex 
fc60: 3d 20 31 29 5d 0d 0a 20 20 20 20 20 20 20 20 49  = 1)]..        I
fc70: 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d 0a 20  ntPtr[] argv,.. 
fc80: 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
fc90: 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
fca0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcf0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
fd00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
fd10: 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
fd20: 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
fd30: 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
fd40: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
fd50: 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
fd60: 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
fd70: 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28  rrorCode xBegin(
fd80: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
fd90: 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
fda0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
fe00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
fe10: 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
fe20: 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
fe30: 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
fe40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
fe50: 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
fe60: 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
fe70: 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
fe80: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
fe90: 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
fea0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
feb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
ff00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ff10: 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
ff20: 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
ff30: 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
ff40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ff50: 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
ff60: 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
ff70: 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69  ErrorCode xCommi
ff80: 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
ff90: 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
ffa0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fff0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
10000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
10020 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
10030 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
10040 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10050 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
10060 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
10070 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
10080 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
10090 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
100a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
10100 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10110 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10120 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
10130 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
10140 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10150 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10160 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
10170 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
10180 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
10190 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
101a0 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
101b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
101c0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  me,..        ref
101d0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
101e0 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
101f0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55     ref IntPtr pU
10200 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d  serData..    );.
10210 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
10220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10260 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
10270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10280 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
10290 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
102a0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
102b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
102c0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
102d0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
102e0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61  eErrorCode xRena
102f0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  me(..        Int
10300 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
10310 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
10320 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
10330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
10380 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10390 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
103a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
103b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
103c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
103d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
103e0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
103f0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
10400 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
10410 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
10420 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
10430 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
10440 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
10450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10490 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
104a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
104b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
104c0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
104d0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
104e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
104f0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
10500 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
10510 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10520 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
10530 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
10540 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
10550 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
10560 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
10570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105b0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
105c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
105d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
105e0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
105f0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
10600 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10610 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
10620 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
10630 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
10640 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
10650 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
10660 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
10670 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
10680 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106d0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
106e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
106f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
10700 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
10710 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
10720 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10730 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
10740 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
10750 78 46 75 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xFunc(..        
10760 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
10770 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
10780 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 5b 4d 61  gc,..        [Ma
10790 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
107a0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 2c 20 53  dType.LPArray, S
107b0 69 7a 65 50 61 72 61 6d 49 6e 64 65 78 20 3d 20  izeParamIndex = 
107c0 31 29 5d 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  1)]..        Int
107d0 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20 20  Ptr[] argv..    
107e0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
107f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10830 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
10840 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10850 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
10860 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
10870 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
10880 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10890 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
108a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f  blic delegate vo
108b0 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  id xDestroyModul
108c0 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  e(IntPtr pClient
108d0 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Data);..#endif..
108e0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
108f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
10950 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72   Native Structur
10960 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  es..#if INTEROP_
10970 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20  VIRTUAL_TABLE.. 
10980 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
10990 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
109a0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
109b0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
109c0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
109d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
109e0 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  lic int iVersion
109f0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
10a00 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  c xCreate xCreat
10a10 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
10a20 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e  ic xConnect xCon
10a30 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
10a40 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78  ublic xBestIndex
10a50 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20   xBestIndex;..  
10a60 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 69        public xDi
10a70 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
10a80 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
10a90 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78  ublic xDestroy x
10aa0 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20  Destroy;..      
10ab0 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78    public xOpen x
10ac0 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  Open;..        p
10ad0 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c  ublic xClose xCl
10ae0 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ose;..        pu
10af0 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46 69  blic xFilter xFi
10b00 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70  lter;..        p
10b10 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78  ublic xNext xNex
10b20 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
10b30 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20  ic xEof xEof;.. 
10b40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
10b50 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a  olumn xColumn;..
10b60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10b70 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20  RowId xRowId;.. 
10b80 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 55         public xU
10b90 70 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a  pdate xUpdate;..
10ba0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
10bb0 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20  Begin xBegin;.. 
10bc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53         public xS
10bd0 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20  ync xSync;..    
10be0 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d      public xComm
10bf0 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20  it xCommit;..   
10c00 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
10c10 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b  lback xRollback;
10c20 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10c30 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78   xFindFunction x
10c40 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20  FindFunction;.. 
10c50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
10c60 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a  ename xRename;..
10c70 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d          /* The m
10c80 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
10c90 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
10ca0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64   the sqlite3_mod
10cb0 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20  ule..         * 
10cc0 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62  object.  Those b
10cd0 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
10ce0 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74  sion 2 and great
10cf0 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  er. */..        
10d00 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e  public xSavepoin
10d10 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20  t xSavepoint;.. 
10d20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
10d30 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b  elease xRelease;
10d40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10d50 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f   xRollbackTo xRo
10d60 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d  llbackTo;..    }
10d70 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
10dd0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
10de0 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
10df0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10e00 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74  truct sqlite3_vt
10e10 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ab..    {..     
10e20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
10e30 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
10e40 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52     public int nR
10e50 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52  ef; /* NO LONGER
10e60 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
10e70 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
10e80 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d  zErrMsg;..    }.
10e90 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
10ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ee0 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
10ef0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
10f00 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
10f10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10f20 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
10f30 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d  b_cursor..    {.
10f40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
10f50 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20  IntPtr pVTab;.. 
10f60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
10f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f90 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
10fc0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
10fd0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
10fe0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
10ff0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
11000 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
11010 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  nt..    {..     
11020 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
11030 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
11040 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
11050 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
11060 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
11070 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
11080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
11090 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
110a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
110b0 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d  f (constraint !=
110c0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
110d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
110e0 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
110f0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c   constraint.iCol
11100 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
11110 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74        op = const
11120 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20  raint.op;..     
11130 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62 6c             usabl
11140 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  e = constraint.u
11150 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
11160 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66          iTermOff
11170 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  set = constraint
11180 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20  .iTermOffset;.. 
11190 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
111a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
111b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
111c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11200 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
11210 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
11220 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
11230 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f  IndexConstraintO
11240 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70  p op;..        p
11250 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c  ublic byte usabl
11260 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
11270 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73  ic int iTermOffs
11280 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
11290 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
112a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
112e0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
112f0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
11300 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
11310 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
11320 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
11330 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20  derby..    {..  
11340 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
11350 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
11360 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  by(..           
11370 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
11380 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20  rBy orderBy..   
11390 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
113a0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
113b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
113c0 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64           if (ord
113d0 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  erBy != null).. 
113e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
11400 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e  olumn = orderBy.
11410 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
11420 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20 3d            desc =
11430 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a   orderBy.desc;..
11440 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
11450 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11460 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
114b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
114c0 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f  t iColumn; /* Co
114d0 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a  lumn number */..
114e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
114f0 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54  yte desc;   /* T
11500 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46  rue for DESC.  F
11510 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f  alse for ASC. */
11520 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11580 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
11590 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
115a0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
115b0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
115c0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
115d0 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20  raint_usage..   
115e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
115f0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
11600 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
11610 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
11620 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
11630 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74  raintUsage const
11640 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20  raintUsage..    
11650 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
11660 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
11670 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11680 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
11690 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e  traintUsage != n
116a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
116b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
116c0 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d       argvIndex =
116d0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
116e0 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20  .argvIndex;..   
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69               omi
11700 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  t = constraintUs
11710 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  age.omit;..     
11720 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11730 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
11740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11790 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67    public int arg
117a0 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30  vIndex; /* if >0
117b0 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20  , constraint is 
117c0 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20  part of argv to 
117d0 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20  xFilter */..    
117e0 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
117f0 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20  omit;     /* Do 
11800 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20  not code a test 
11810 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61  for this constra
11820 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  int */..    }...
11830 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
11840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11880 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
11890 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
118a0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
118b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
118c0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
118d0 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20  _info..    {..  
118e0 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20        /* Inputs 
118f0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
11900 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69  ic int nConstrai
11910 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66  nt; /* Number of
11920 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e   entries in aCon
11930 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
11940 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
11950 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a  r aConstraint;..
11960 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
11970 6e 74 20 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20  nt nOrderBy;..  
11980 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
11990 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
119a0 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
119b0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
119c0 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
119d0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
119e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
119f0 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
11a00 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
11a10 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
11a20 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
11a30 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
11a40 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
11a50 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
11a60 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
11a70 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
11a80 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
11a90 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
11aa0 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
11ab0 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
11ac0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
11ad0 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
11ae0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
11af0 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
11b00 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
11b10 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
11b20 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
11b30 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
11b40 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
11b50 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
11b60 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
11b70 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ndex */..    }..
11b80 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
11b90 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 23  region..  }....#
11ba0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
11bb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11bc0 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
11bd0 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
11be0 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
11bf0 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
11c00 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
11c10 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
11c20 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
11c30 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
11c40 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
11c50 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
11c60 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
11c70 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
11c80 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
11c90 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
11ca0 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
11cb0 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
11cc0 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
11cd0 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
11ce0 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
11cf0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
11d00 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
11d10 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
11d20 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
11d30 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
11d40 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
11d50 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
11d60 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
11d70 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
11d80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
11d90 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
11da0 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
11db0 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
11dc0 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
11dd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
11de0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
11df0 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
11e00 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
11e10 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
11e20 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
11e30 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
11e40 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
11e50 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
11e60 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
11e70 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
11e80 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
11e90 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
11ea0 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
11eb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
11ec0 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
11ed0 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
11ee0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
11ef0 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
11f00 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
11f10 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
11f20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
11f30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
11f40 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
11f50 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
11f60 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
11f70 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
11f80 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
11f90 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
11fa0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
11fb0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
11fc0 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
11fd0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
11fe0 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
11ff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
12000 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
12010 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
12020 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
12030 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65    }....  }....#e
12040 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
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 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
120a0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
120b0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
120c0 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
120d0 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
120e0 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
120f0 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
12100 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
12110 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
12120 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
12130 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
12140 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12150 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
12160 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
12170 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
12180 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
12190 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
121a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
121b0 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
121c0 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
121d0 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
121e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
121f0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
12200 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
12210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
12220 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
12230 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
12240 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
12250 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
12260 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
12270 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
12280 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12290 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
122b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
122e0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
122f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12300 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
12310 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
12320 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
12330 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
12340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
123a0 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  ate bool ownHand
123b0 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
123c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12410 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
12420 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
12430 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
12440 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
12450 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  db)..        {..
12460 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12470 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  db != null)..   
12480 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
12490 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
124a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
124b0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
124c0 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  (db.syncRoot)..#
124d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
124e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12500 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d  turn db.handle;.
12510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12520 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12530 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
12540 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
12550 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
12560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
125c0 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  rnal SQLiteConne
125d0 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50  ctionHandle(IntP
125e0 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48  tr db, bool ownH
125f0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
12600 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61      : this(ownHa
12610 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
12620 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
12630 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12640 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
12650 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
12660 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
12670 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12680 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e       this.ownHan
12690 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b  dle = ownHandle;
126a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126b0 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
126c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
126d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
126e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
126f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12730 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12740 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12750 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e  nHandle(bool own
12760 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
12770 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
12780 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
12790 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
127a0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
127b0 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
127c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
127d0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
127e0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 55 6e 73  ncrement(ref Uns
127f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
12800 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
12810 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
12820 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12830 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12870 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12880 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
12890 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
128a0 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
128b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
128c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
128d0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
128e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
128f0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
12900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12910 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
12920 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
12930 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
12940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12950 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12960 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
12970 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12980 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
12990 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
129a0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
129b0 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
129c0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
129d0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
129e0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
129f0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
12a00 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
12a10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12a20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
12a30 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a50 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
12a60 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
12a70 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
12a80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12a90 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
12aa0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
12ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ac0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
12ad0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
12ae0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
12af0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
12b00 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
12b10 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
12b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b30 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
12b40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
12b60 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
12b70 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
12b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b90 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65       "CloseConne
12ba0 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ction: {0}", loc
12bb0 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20  alHandle));..   
12bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12be0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
12bf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12c00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
12c10 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
12c20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
12c30 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
12c40 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c60 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
12c70 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
12c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
12cb0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
12cc0 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
12cd0 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
12ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cf0 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
12d00 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
12d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d30 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
12d40 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
12d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
12d60 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
12d70 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
12d80 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
12d90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
12da0 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
12db0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
12dc0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
12dd0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12de0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
12df0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
12e00 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
12e10 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
12e20 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
12e30 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
12e40 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
12e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
12e60 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
12e70 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
12e80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
12e90 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
12ea0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
12eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12ec0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
12ed0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
12ef0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
12f00 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
12f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
12f30 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63  ection: {0}, exc
12f40 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
12f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f60 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
12f70 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
12f80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12f90 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12fc0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
12fd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12fe0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
12ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
13000 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
13010 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13030 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
13040 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13050 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
13070 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
13080 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
13090 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
130a0 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
130b0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
130c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
130d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
130e0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
130f0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
13100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
13110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13150 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
13160 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
13170 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
13180 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
13190 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
131a0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
131b0 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
131c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
131d0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
131e0 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65  iveMethods.conne
131f0 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20  ctionCount);..  
13200 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
13210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13260 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
13270 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e  blic bool OwnHan
13280 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
13290 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
132a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
132b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
132c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
132d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
132e0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
132f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13320 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b  eturn ownHandle;
13330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13340 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
13350 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
13360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
133c0 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
133d0 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
133e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
133f0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
13400 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
13410 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13420 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
13430 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
13440 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
13460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13470 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
13480 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
13490 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
134a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
134b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
134c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13510 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
13520 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
13530 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
13540 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
13550 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
13560 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13570 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
13580 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
13590 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
135a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
135b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
135c0 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
135d0 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
135e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
135f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
13600 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
13610 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13660 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
13670 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  n SQLiteStatemen
13680 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  tHandle Class.. 
13690 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
136a0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
136b0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
136c0 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65  d SQLite stateme
136d0 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nts...    intern
136e0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
136f0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
13700 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
13710 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
13720 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
13730 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13740 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
13750 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
13760 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
13770 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
13780 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
137e0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
137f0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
13800 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13860 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
13870 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
13880 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61  IntPtr(SQLiteSta
13890 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d  tementHandle stm
138a0 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
138b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
138c0 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tmt != null)..  
138d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
138e0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
138f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13900 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
13910 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29   (stmt.syncRoot)
13920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
13930 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13950 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
13960 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
13970 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13980 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13990 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
139a0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
139b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13a10 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
13a20 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
13a30 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
13a40 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
13a50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  tr stmt)..      
13a60 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
13a70 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
13a80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13a90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13aa0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
13ab0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
13ac0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
13ae0 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
13af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
13b00 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d  etHandle(stmt);.
13b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13b20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13b30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13b80 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
13b90 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
13ba0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
13bb0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
13bc0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
13bd0 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
13be0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
13bf0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
13c00 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ncrement(..     
13c10 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
13c20 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
13c30 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ds.statementCoun
13c40 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
13c50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13c60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13cb0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
13cc0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
13cd0 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
13ce0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13cf0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
13d00 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
13d10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13d20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
13d30 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
13d40 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
13d50 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
13d60 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
13d70 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
13d80 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
13d90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13da0 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
13db0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
13dc0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
13dd0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
13de0 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
13df0 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63  atement(cnn, loc
13e00 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
13e10 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
13e20 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
13e30 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
13e40 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
13e50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
13e70 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
13e80 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
13e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ea0 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
13eb0 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c  Statement: {0}",
13ec0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d   localHandle));.
13ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ee0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13ef0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
13f00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13f20 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
13f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f40 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
13f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13f70 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
13f80 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
13f90 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
13fa0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fc0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
13fd0 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
13fe0 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  cnn, handle);.. 
13ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14000 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
14010 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14030 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14040 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
14050 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
14060 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
14070 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
14080 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140a0 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
140b0 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e  Methods.statemen
140c0 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  tCount);..#endif
140d0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
140e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
140f0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
14100 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
14110 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
14120 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
14130 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
14140 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
14150 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
14160 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
14170 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
14180 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
14190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
141a0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
141b0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
141c0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
141d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
141e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
141f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14200 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
14210 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
14220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14230 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
14240 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
14250 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
14260 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
14270 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
14280 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20  dle, e));..     
14290 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
142a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
142b0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
142c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
142d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
142e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
142f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
14300 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
14310 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
14320 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14330 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
14340 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
14350 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
14360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14380 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
14390 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
143a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
143b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
143c0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
143d0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
143e0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
143f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
14400 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
14410 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14420 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14460 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
14470 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
14480 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
14490 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
144a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
144b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
144c0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
144d0 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
144e0 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
144f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
14500 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
14510 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
14520 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14570 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14580 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
14590 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
145a0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
145b0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
145c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
145d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
145e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
145f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
14600 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
14610 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
14620 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14630 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
14640 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
14650 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
14660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14670 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
14680 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14690 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
146a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
146e0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
146f0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
14700 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
14710 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
14720 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
14730 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14740 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
14750 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
14760 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
14770 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14780 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
14790 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
147a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
147b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
147c0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
147d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14830 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
14840 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
14850 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
14860 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
14870 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
14880 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
14890 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
148a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
148b0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
148c0 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
148d0 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
148e0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
148f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14900 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
14910 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
14920 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
14930 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
14940 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
14950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14990 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
149a0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
149b0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
149c0 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
149d0 20 20 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
14a20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
14a30 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
14a40 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
14a50 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
14a60 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
14a70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
14a80 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
14a90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14aa0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
14ab0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14ad0 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
14ae0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
14af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14b20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
14b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
14b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
14b60 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
14b70 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
14b80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14bd0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
14be0 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
14bf0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
14c00 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
14c10 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
14c20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
14c30 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
14c40 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
14c50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14c60 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
14c70 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
14c80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14c90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14ca0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
14cb0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
14cc0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
14cd0 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
14ce0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14cf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14d50 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
14d60 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
14d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
14d80 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
14d90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
14da0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
14db0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
14dc0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
14dd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
14de0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
14df0 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
14e00 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
14e10 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
14e20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14e70 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
14e80 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
14e90 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
14ea0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
14eb0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
14ec0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
14ed0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14ee0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
14f00 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
14f10 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
14f20 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
14f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14f40 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
14f50 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
14f60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
14f70 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
14f80 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
14f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fa0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
14fb0 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63  hBackup(cnn, loc
14fc0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
14fd0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
14fe0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
14ff0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
15000 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
15010 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15030 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
15040 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
15050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15060 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
15070 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  ckup: {0}", loca
15080 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20  lHandle));..    
15090 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
150a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
150b0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
150c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
150d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
150e0 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
150f0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
15100 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
15110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15130 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
15140 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
15150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
15180 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42  LiteBase.FinishB
15190 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c  ackup(cnn, handl
151a0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
151b0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
151c0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
151d0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
151e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
151f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
15200 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
15210 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
15220 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
15230 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
15240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15250 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
15260 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61  NativeMethods.ba
15270 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  ckupCount);..#en
15280 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
15290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152a0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
152b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
152c0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
152d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
152e0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
152f0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
15300 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
15310 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
15320 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
15330 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
15340 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
15350 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
15360 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
15370 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
15380 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
15390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
153a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
153b0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
153c0 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
153d0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
153e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
153f0 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c  nishBackup: {0},
15400 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
15410 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
15420 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
15430 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  e, e));..       
15440 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15450 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
15460 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
15470 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15480 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15490 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
154a0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
154b0 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
154c0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
154d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
154e0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
154f0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
15500 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
15510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15530 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
15540 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
15550 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
15560 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
15570 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
15580 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
15590 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
155a0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
155b0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
155c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
155d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15610 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
15620 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
15630 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
15640 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
15650 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
15660 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
15670 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
15680 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
15690 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
156a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62  eNativeMethods.b
156b0 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20  ackupCount);..  
156c0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
156d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15720 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
15730 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
15740 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
15750 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15760 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
15770 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
15780 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15790 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
157a0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
157b0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
157c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
157d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
157e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
157f0 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
15800 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
15810 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15820 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15830 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
15890 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
158a0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
158b0 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
158c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
158d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
158e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
158f0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
15900 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
15910 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15930 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
15940 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
15950 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15960 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
15970 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
15980 6e 0d 0a 7d 0d 0a                                n..}..