System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 982b8733a15b20eed3f38bf080654223e11496ee:


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 44 45 54 45 43 54 49 4f 4e  (TRACE_DETECTION
01a0: 20 7c 7c 20 54 52 41 43 45 5f 53 48 41 52 45 44   || TRACE_SHARED
01b0: 20 7c 7c 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   || TRACE_PRELOA
01c0: 44 20 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c  D || TRACE_HANDL
01d0: 45 29 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  E)..  using Syst
01e0: 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d  em.Diagnostics;.
01f0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0200: 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  ng System.Collec
0210: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a  tions.Generic;..
0220: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49    using System.I
0230: 4f 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  O;..  using Syst
0240: 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a  em.Reflection;..
0250: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0270: 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75 73   && !DEBUG..  us
0280: 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75 72  ing System.Secur
0290: 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ity;..#endif....
02a0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52    using System.R
02b0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
02c0: 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20 21  rvices;....#if !
02d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
02e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69  FRAMEWORK..  usi
02f0: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0300: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
0310: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
0320: 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55  FRAMEWORK || COU
0330: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69  NT_HANDLE..  usi
0340: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
0350: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
0360: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58    using System.X
0370: 6d 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ml;....#if !PLAT
0380: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
0390: 45 57 4f 52 4b 20 26 26 20 21 44 45 42 55 47 0d  EWORK && !DEBUG.
03a0: 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61  .  [SuppressUnma
03b0: 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74  nagedCodeSecurit
03c0: 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e  y]..#endif..  in
03d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
03e0: 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ass UnsafeNative
03f0: 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20  Methods..  {..  
0400: 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69 74      #region Crit
0410: 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75 6e  ical Handle Coun
0420: 74 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20  ts (Debug Build 
0430: 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e 54  Only)..#if COUNT
0440: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 2f  _HANDLE..      /
0450: 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
0460: 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 72  : These counts r
0470: 65 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f 74  epresent the tot
0480: 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74  al number of out
0490: 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20  standing..      
04a0: 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64 69  //       (non-di
04b0: 73 70 6f 73 65 64 29 20 43 72 69 74 69 63 61 6c  sposed) Critical
04c0: 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20 6f  Handle derived o
04d0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 0d  bject instances.
04e0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
04f0: 63 72 65 61 74 65 64 20 62 79 20 74 68 69 73 20  created by this 
0500: 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72 65 20  library and are 
0510: 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75 73  primarily for us
0520: 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20  e by..      //  
0530: 20 20 20 20 20 74 68 65 20 74 65 73 74 20 73 75       the test su
0540: 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75 6e  ite.  These coun
0550: 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e 74  ts are increment
0560: 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
0570: 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63 69   //       associ
0580: 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f 72  ated constructor
0590: 73 20 61 6e 64 20 61 72 65 20 64 65 63 72 65 6d  s and are decrem
05a0: 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d 0a  ented upon the..
05b0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
05c0: 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c 65  uccessful comple
05d0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73 6f  tion of the asso
05e0: 63 69 61 74 65 64 20 52 65 6c 65 61 73 65 48 61  ciated ReleaseHa
05f0: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ndle..      //  
0600: 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a 20       methods... 
0610: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69       //..      i
0620: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69  nternal static i
0630: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  nt connectionCou
0640: 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  nt;..      inter
0650: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 73  nal static int s
0660: 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a  tatementCount;..
0670: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0680: 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b 75 70  tatic int backup
0690: 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Count;..#endif..
06a0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
06b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
06c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0700: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0710: 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69  gion Shared Nati
0720: 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72  ve SQLite Librar
0730: 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f  y Pre-Loading Co
0740: 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  de..      #regio
0750: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
0760: 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  nts..      /// <
0770: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0780: 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74  /// The file ext
0790: 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20  ension used for 
07a0: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
07b0: 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f  raries...      /
07c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
07d0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
07e0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
07f0: 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  ing DllFileExten
0800: 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a  sion = ".dll";..
0810: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
0820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0860: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
0870: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0880: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
0890: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68  sion used for th
08a0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
08b0: 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ion file...     
08c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
08d0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
08e0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
08f0: 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65  tring ConfigFile
0900: 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f  Extension = ".co
0910: 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  nfig";....      
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
0970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0980: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
0990: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
09a0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
09b0: 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69  ion file specifi
09c0: 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  c to the..      
09d0: 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  /// System.Data.
09e0: 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e  SQLite assembly.
09f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0a00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0a10: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0a20: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c  donly string Xml
0a30: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
0a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79 70 65  ..          type
0a50: 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  of(UnsafeNativeM
0a60: 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63  ethods).Namespac
0a70: 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  e + DllFileExten
0a80: 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20  sion +..        
0a90: 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65    ConfigFileExte
0aa0: 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 23 65  nsion;..      #e
0ab0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0ac0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
0b10: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0b20: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
0b30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0b40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c        /// This l
0b50: 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70  ock is used to p
0b60: 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69  rotect the stati
0b70: 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  c _SQLiteNativeM
0b80: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a  oduleFileName,..
0b90: 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69 74        /// _SQLit
0ba0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
0bb0: 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73 73  dle, and process
0bc0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
0bd0: 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e 0d  atforms fields..
0be0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
0bf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
0c00: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
0c10: 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74  only object stat
0c20: 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  icSyncRoot = new
0c30: 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 23 69   object();....#i
0c40: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
0ca0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0cb0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69       /// This di
0cc0: 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20  ctionary stores 
0cd0: 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20  the read counts 
0ce0: 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65 20  for the runtime 
0cf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  configuration.. 
0d00: 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67       /// setting
0d10: 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d 61  s.  This informa
0d20: 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65 63  tion is only rec
0d30: 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70 69  orded when compi
0d40: 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  led in the..    
0d50: 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62 75    /// "Debug" bu
0d60: 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ild configuratio
0d70: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
0d80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0d90: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44  private static D
0da0: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
0db0: 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 52 65  , int> settingRe
0dc0: 61 64 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69  adCounts;..#endi
0dd0: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
0de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e20: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
0e30: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0e40: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
0e50: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
0e60: 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e  mappings between
0e70: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
0e80: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 2f  tecture..      /
0e90: 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61  // names and pla
0ea0: 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68  tform names.  Th
0eb0: 65 73 65 20 6d 61 70 70 69 6e 67 73 20 61 72 65  ese mappings are
0ec0: 20 6e 6f 77 20 75 73 65 64 20 66 6f 72 20 74 77   now used for tw
0ed0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72  o..      /// pur
0ee0: 70 6f 73 65 73 2e 20 20 46 69 72 73 74 2c 20 74  poses.  First, t
0ef0: 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f 20  hey are used to 
0f00: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65  determine if the
0f10: 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a   assembly code..
0f20: 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 20 73        /// base s
0f30: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e  hould be used in
0f40: 73 74 65 61 64 20 6f 66 20 74 68 65 20 6c 6f 63  stead of the loc
0f50: 61 74 69 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f  ation, based upo
0f60: 6e 20 77 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20  n whether one.. 
0f70: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65       /// or more
0f80: 20 6f 66 20 74 68 65 20 6e 61 6d 65 64 20 73 75   of the named su
0f90: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 65 78  b-directories ex
0fa0: 69 73 74 20 77 69 74 68 69 6e 20 74 68 65 20 61  ist within the a
0fb0: 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20  ssembly code..  
0fc0: 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53      /// base.  S
0fd0: 65 63 6f 6e 64 2c 20 74 68 65 79 20 61 72 65 20  econd, they are 
0fe0: 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20 69  used to assist i
0ff0: 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65 20 61 70  n loading the ap
1000: 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
1010: 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6e 74 65   /// SQLite inte
1020: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 6e 74  rop assembly int
1030: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  o the current pr
1040: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
1050: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1060: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1070: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
1080: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72  ring, string> pr
1090: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
10a0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 20  urePlatforms;.. 
10b0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
10c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
10d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
1120: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1130: 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73  // For now, this
1140: 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79 20 63   method simply c
1150: 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69 61 6c  alls the Initial
1160: 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  ize method...   
1170: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1180: 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69 63 20  >..      static 
1190: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
11a0: 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ods()..      {..
11b0: 20 20 20 20 20 20 20 20 20 20 49 6e 69 74 69 61            Initia
11c0: 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d  lize();..      }
11d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1220: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
1230: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1240: 20 20 2f 2f 2f 20 54 68 69 73 20 74 79 70 65 20    /// This type 
1250: 69 73 20 6f 6e 6c 79 20 70 72 65 73 65 6e 74 20  is only present 
1260: 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
1270: 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  Mono...      ///
1280: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1290: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
12a0: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
12b0: 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70  g MonoRuntimeTyp
12c0: 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74 69 6d  e = "Mono.Runtim
12d0: 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  e";....      ///
12e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12f0: 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74 72 61 63    /// Keeps trac
1300: 6b 20 6f 66 20 77 68 65 74 68 65 72 20 77 65 20  k of whether we 
1310: 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d  are running on M
1320: 6f 6e 6f 2e 20 20 49 6e 69 74 69 61 6c 6c 79 20  ono.  Initially 
1330: 6e 75 6c 6c 2c 20 69 74 20 69 73 0d 0a 20 20 20  null, it is..   
1340: 20 20 20 2f 2f 2f 20 73 65 74 20 62 79 20 74 68     /// set by th
1350: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73 4d  e <see cref="IsM
1360: 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f  ono" /> method o
1370: 6e 20 69 74 73 20 66 69 72 73 74 20 63 61 6c 6c  n its first call
1380: 2e 20 20 4c 61 74 65 72 2c 20 69 74 0d 0a 20 20  .  Later, it..  
1390: 20 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75 72      /// is retur
13a0: 6e 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20  ned verbatim by 
13b0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
13c0: 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  sMono" /> method
13d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
13f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
1400: 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20 6e 75 6c  ol? isMono = nul
1410: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l;....      /// 
1420: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1430: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
1440: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
1450: 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20  his assembly is 
1460: 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e  running on Mono.
1470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1480: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1490: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
14a0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
14b0: 69 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79  if this assembly
14c0: 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d   is running on M
14d0: 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ono...      /// 
14e0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
14f0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1500: 20 62 6f 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a   bool IsMono()..
1510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1520: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1530: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1540: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
1550: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1560: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1570: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1580: 28 69 73 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29  (isMono == null)
1590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15a0: 20 20 20 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d          isMono =
15b0: 20 28 54 79 70 65 2e 47 65 74 54 79 70 65 28 4d   (Type.GetType(M
15c0: 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 29 20  onoRuntimeType) 
15d0: 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  != null);....   
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15f0: 65 74 75 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f  eturn (bool)isMo
1600: 6e 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  no;..           
1610: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1620: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
1630: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
1640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1650: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
1660: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1670: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1680: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
1690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
16a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
16f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1700: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 77 72  /// This is a wr
1710: 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
1720: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
1730: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e 46 6f   cref="String.Fo
1740: 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72 6f 76  rmat(IFormatProv
1750: 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a 65  ider,String,Obje
1760: 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f 64  ct[])" /> method
1770: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e 20  ...      /// On 
1780: 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f 20  Mono, it has to 
1790: 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 20  call the method 
17a0: 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f 75 74  overload without
17b0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
17c0: 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f 72 6d  <see cref="IForm
17d0: 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e 20 70  atProvider" /> p
17e0: 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20 74 6f  arameter, due to
17f0: 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d   a bug in Mono..
1800: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
1810: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1820: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
1830: 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 20 20  ovider">..      
1840: 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73 65 64  /// This is used
1850: 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73 70 65   for culture-spe
1860: 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69 6e 67  cific formatting
1870: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
1880: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
1890: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f   <param name="fo
18a0: 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  rmat">..      //
18b0: 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72  / The format str
18c0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
18d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18f0: 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f  "args">..      /
1900: 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68 65 20  // An array the 
1910: 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d 61  objects to forma
1920: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
1930: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
1940: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1950: 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c     /// The resul
1960: 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20 20  ting string...  
1970: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1980: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
1990: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
19a0: 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a   StringFormat(..
19b0: 20 20 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61            IForma
19c0: 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64  tProvider provid
19d0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  er,..          s
19e0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a 20  tring format,.. 
19f0: 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 20           params 
1a00: 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20  object[] args.. 
1a10: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1a20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
1a30: 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20  f (IsMono())..  
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a50: 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  rn String.Format
1a60: 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d  (format, args);.
1a70: 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d  .          else.
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1a90: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
1aa0: 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20 66 6f  mat(provider, fo
1ab0: 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20  rmat, args);..  
1ac0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1b20: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1b30: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
1b40: 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  s to initialize 
1b50: 74 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72  this class by pr
1b60: 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61  e-loading the na
1b70: 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
1b80: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66     /// library f
1b90: 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  or the processor
1ba0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
1bb0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
1bc0: 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  cess...      ///
1bd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1be0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bf0: 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69  ic void Initiali
1c00: 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23  ze()..      {..#
1c10: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
1c20: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
1c30: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
1c40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c50: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
1c60: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
1c70: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1c80: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1c90: 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c   If the "No_PreL
1ca0: 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72  oadSQLite" envir
1cb0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
1cc0: 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20  is set (to..    
1cd0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
1ce0: 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61  nything), skip a
1cf0: 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63  ll our special c
1d00: 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72  ode and simply r
1d10: 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eturn...        
1d20: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1d30: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
1d40: 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  lue("No_PreLoadS
1d50: 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d  QLite", null) !=
1d60: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1d70: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23        return;..#
1d80: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
1d90: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1da0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
1dc0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1dd0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1de0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1df0: 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c 69  E: Create the li
1e00: 73 74 20 6f 66 20 73 74 61 74 69 73 74 69 63 73  st of statistics
1e10: 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61   that will conta
1e20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1e30: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e        //       n
1e40: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65  umber of times e
1e50: 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75  ach setting valu
1e60: 65 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e  e has been read.
1e70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1e90: 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65 61    if (settingRea
1ea0: 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29  dCounts == null)
1eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ec0: 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43      settingReadC
1ed0: 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74  ounts = new Dict
1ee0: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69  ionary<string, i
1ef0: 6e 74 3e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  nt>();..#endif..
1f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f10: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1f20: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
1f30: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
1f40: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
1f50: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
1f60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1f70: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
1f80: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
1f90: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
1fa0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
1fb0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
1fc0: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
1fd0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
1ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2000: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
2010: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2020: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2030: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2050: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
2060: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
2070: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
2080: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
2090: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
20a0: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
20b0: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
20c0: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
20d0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
20e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
20f0: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
2100: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2120: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
2130: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
2140: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
2150: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
2160: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
2170: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
21a0: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
21b0: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
21c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
21d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21e0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
21f0: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
2200: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
2210: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2230: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
2240: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
2250: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
2260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2270: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2280: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
2290: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
22a0: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
22b0: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
22e0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
22f0: 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36  Add("AMD64", "x6
2300: 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4");..          
2310: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
2320: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
2330: 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34  tforms.Add("IA64
2340: 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a  ", "Itanium");..
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2360: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
2370: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
2380: 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e  .Add("ARM", "Win
2390: 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  CE");..         
23a0: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51       }....#if SQ
23b0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
23c0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
23d0: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
23e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
23f0: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
2400: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
2410: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2420: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
2430: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
2440: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
2450: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
2460: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2480: 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  (_SQLiteNativeMo
2490: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e  duleHandle == In
24a0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
24b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
24d0: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
24e0: 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
24f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2500: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
2510: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75  rchitecture = nu
2520: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
2530: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
2540: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
2550: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
2560: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2580: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
2590: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
25a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
25b0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
25c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25e0: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
25f0: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
2600: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
2610: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
2620: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2630: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
2640: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
2650: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
2660: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
2670: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
2680: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
2690: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
26a0: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
26b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d0: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
26e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26f0: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
2700: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
2710: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
2720: 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65  Directory, proce
2730: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
2740: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2750: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
2760: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2770: 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
2780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2790: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
27a0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b  veModuleHandle);
27b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27c0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
27d0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
27e0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2840: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2850: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
2860: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
2870: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
2880: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66  tion file name f
2890: 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d  or the assembly.
28a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61  .      /// conta
28b0: 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65  ining the manage
28c0: 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  d System.Data.SQ
28d0: 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e  Lite components.
28e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
28f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2900: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2910: 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63     /// The XML c
2920: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
2930: 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c  e name -OR- null
2940: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
2950: 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20   determined..   
2960: 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e     /// or does n
2970: 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20  ot exist...     
2980: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2990: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
29a0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
29b0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
29c0: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
29d0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
29e0: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
29f0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
2a00: 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Name;....#if !PL
2a10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2a30: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41     directory = A
2a40: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
2a50: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
2a60: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
2a70: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68   fileName = Path
2a80: 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f  .Combine(directo
2a90: 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ry, XmlConfigFil
2aa0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
2ab0: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
2ac0: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
2ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2ae0: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
2af0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2b00: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
2b10: 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
2b20: 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20  ctory();..      
2b30: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50      fileName = P
2b40: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
2b50: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
2b60: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
2b70: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
2b80: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
2b90: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2ba0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
2bb0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
2bc0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
2bd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
2be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2c30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c40: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
2c50: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
2c60: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70   value of the sp
2c70: 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c  ecified setting,
2c80: 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a   using the XML..
2c90: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
2ca0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64  uration file and
2cb0: 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  /or the environm
2cc0: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f  ent variables fo
2cd0: 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  r the current.. 
2ce0: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
2cf0: 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72   and/or the curr
2d00: 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e  ent system, when
2d10: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
2d20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2d30: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
2d40: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
2d50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2d60: 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74  name of the sett
2d70: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
2d80: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2d90: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2da0: 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20  "default">..    
2db0: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
2dc0: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  to be returned i
2dd0: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61  f the setting ha
2de0: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
2df0: 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20  xplicitly..     
2e00: 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62   /// or cannot b
2e10: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
2e20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e30: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2e40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2e50: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
2e60: 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20  he setting -OR- 
2e70: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
2e80: 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a  e specified by..
2e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2ea0: 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
2eb0: 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20  t" /> if it has 
2ec0: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
2ed0: 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20  licitly or..    
2ee0: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
2ef0: 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20  determined.  By 
2f00: 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66  default, all ref
2f10: 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74  erences to exist
2f20: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
2f30: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
2f40: 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70  bles will be exp
2f50: 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63  anded to their c
2f60: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c  orresponding val
2f70: 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ues..      /// w
2f80: 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20  ithin the value 
2f90: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75  to be returned u
2fa0: 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65  nless either the
2fb0: 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d   "No_Expand" or.
2fc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45  .      /// "No_E
2fd0: 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20  xpand_<paramref 
2fe0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20  name="name" />" 
2ff0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
3000: 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d  able is set [to.
3010: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68  .      /// anyth
3020: 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ing]...      ///
3030: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3040: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
3050: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
3060: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
3070: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
3080: 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  e,    /* in */..
3090: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
30a0: 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20   @default /* in 
30b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
30c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
30d0: 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20      if (name == 
30e0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
30f0: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
3100: 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ault;....       
3110: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3150: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3160: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
3170: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
3180: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
3190: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
31a0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
31b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
31d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
31e0: 3a 20 55 70 64 61 74 65 20 73 74 61 74 69 73 74  : Update statist
31f0: 69 63 73 20 66 6f 72 20 74 68 69 73 20 73 65 74  ics for this set
3200: 74 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20  ting value...   
3210: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3220: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3230: 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  (settingReadCoun
3240: 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts != null)..   
3250: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3270: 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20  int count;....  
3280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3290: 69 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43  if (settingReadC
32a0: 6f 75 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75  ounts.TryGetValu
32b0: 65 28 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e  e(name, out coun
32c0: 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t))..           
32d0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
32e0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d  ngReadCounts[nam
32f0: 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d  e] = count + 1;.
3300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3310: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3330: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
3340: 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a  .Add(name, 1);..
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
3360: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
3370: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
3380: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3390: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d  /////////////...
33e0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
33f0: 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d  g value = null;.
3400: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
3410: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3420: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  K..          boo
3430: 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b  l expand = true;
3440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
3450: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
3460: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
3470: 61 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22  able("No_Expand"
3480: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
3490: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34a0: 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20         expand = 
34b0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
34c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
34d0: 6c 73 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d  lse if (Environm
34e0: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
34f0: 6e 74 56 61 72 69 61 62 6c 65 28 53 74 72 69 6e  ntVariable(Strin
3500: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
3510: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
3520: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
3530: 74 43 75 6c 74 75 72 65 2c 20 22 4e 6f 5f 45 78  tCulture, "No_Ex
3540: 70 61 6e 64 5f 7b 30 7d 22 2c 0d 0a 20 20 20 20  pand_{0}",..    
3550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
3560: 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  me)) != null).. 
3570: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3580: 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64            expand
3590: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
35a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
35b0: 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69      value = Envi
35c0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
35d0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e  onmentVariable(n
35e0: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
35f0: 20 20 20 69 66 20 28 65 78 70 61 6e 64 20 26 26     if (expand &&
3600: 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   !String.IsNullO
3610: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
3620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
3630: 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
3640: 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d  t.ExpandEnvironm
3650: 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c  entVariables(val
3660: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
3670: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
3680: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3690: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
36a0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
36b0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
36c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
36e0: 6c 65 4e 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43  leName = GetXmlC
36f0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b  onfigFileName();
3700: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3710: 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d    if (fileName =
3720: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3730: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3740: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20  n @default;.... 
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
3760: 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e  Document documen
3770: 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d  t = new XmlDocum
3780: 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ent();....      
3790: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
37a0: 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b  .Load(fileName);
37b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37c0: 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65    XmlElement ele
37d0: 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  ment = document.
37e0: 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65  SelectSingleNode
37f0: 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  (StringFormat(..
3800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3810: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
3820: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
3830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3840: 20 20 20 22 2f 63 6f 6e 66 69 67 75 72 61 74 69     "/configurati
3850: 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67 73 2f 61  on/appSettings/a
3860: 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c  dd[@key='{0}']",
3870: 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20 20 20 20   name)) as..    
3880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
3890: 6c 45 6c 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20  lElement;....   
38a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
38b0: 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  lement != null).
38c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
38d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38e0: 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e      if (element.
38f0: 48 61 73 41 74 74 72 69 62 75 74 65 28 22 76 61  HasAttribute("va
3900: 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  lue"))..        
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
3920: 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65  lue = element.Ge
3930: 74 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  tAttribute("valu
3940: 65 22 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  e");....#if !PLA
3950: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
3960: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
3970: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
3980: 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e 67 2e  pand && !String.
3990: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
39a0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
39c0: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
39d0: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
39e0: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
39f0: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
3a20: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3a30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3a40: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
3a50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3a60: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
3a70: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
3a80: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
3a90: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
3aa0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
3ab0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
3ac0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
3ad0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
3ae0: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
3af0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
3b00: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
3b10: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
3b20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b40: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
3b50: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b70: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
3b80: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
3b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3ba0: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
3bb0: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
3bc0: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74  er failed to get
3bd0: 20 73 65 74 74 69 6e 67 20 22 20 2b 0d 0a 20 20   setting " +..  
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bf0: 20 20 20 20 22 5c 22 7b 30 7d 5c 22 20 76 61 6c      "\"{0}\" val
3c00: 75 65 3a 20 7b 31 7d 22 2c 20 6e 61 6d 65 2c 20  ue: {1}", name, 
3c10: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
3c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c30: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3c40: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
3c50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3c60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
3c70: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
3c80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
3c90: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
3ca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
3cb0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
3cc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
3d20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3d30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3d40: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3d50: 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53  c string ListToS
3d60: 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69  tring(IList<stri
3d70: 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20  ng> list)..     
3d80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
3d90: 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d   (list == null).
3da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
3db0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
3dc0: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42           StringB
3dd0: 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20  uilder result = 
3de0: 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
3df0: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
3e00: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
3e10: 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73  g element in lis
3e20: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
3e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
3e40: 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75  f (element == nu
3e50: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3e60: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
3e70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3e80: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
3e90: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
3eb0: 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d  lt.Append(' ');.
3ec0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3ed0: 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65   result.Append(e
3ee0: 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  lement);..      
3ef0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3f00: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
3f10: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
3f20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
3f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3f80: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3f90: 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63   int CheckForArc
3fa0: 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
3fb0: 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20  tforms(..       
3fc0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
3fd0: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
3fe0: 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ref List<string>
3ff0: 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20   matches..      
4000: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
4010: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65            int re
4020: 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  sult = 0;....   
4030: 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68         if (match
4040: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
4050: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
4060: 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  es = new List<st
4070: 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ring>();....    
4080: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
4090: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
40a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
40b0: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
40c0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
40d0: 79 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d  y(directory) &&.
40e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
40f0: 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63     (processorArc
4100: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
4110: 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  ms != null))..  
4120: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4140: 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c   foreach (KeyVal
4150: 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73  uePair<string, s
4160: 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20  tring> pair..   
4170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4180: 20 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63           in proc
4190: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
41a0: 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20  ePlatforms)..   
41b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
41c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
41d0: 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65          if (Dire
41e0: 63 74 6f 72 79 2e 45 78 69 73 74 73 28 50 61 74  ctory.Exists(Pat
41f0: 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
4200: 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29  ory, pair.Key)))
4210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4220: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64       matches.Add
4250: 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20  (pair.Key);..   
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4270: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b         result++;
4280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4290: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
42a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42b0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
42c0: 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d  = pair.Value;...
42d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42e0: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
42f0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
4300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4310: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
4320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4330: 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65          if (Dire
4340: 63 74 6f 72 79 2e 45 78 69 73 74 73 28 50 61 74  ctory.Exists(Pat
4350: 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
4360: 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20  ory, value))).. 
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43a0: 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61    matches.Add(va
43b0: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
43c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43d0: 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20   result++;..    
43e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
4400: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4410: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4420: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4430: 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
4440: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  t;..      }.... 
4450: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
44a0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
44b0: 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63  static bool Chec
44c0: 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73  kAssemblyCodeBas
44d0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73  e(..          As
44e0: 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c  sembly assembly,
44f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
4500: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
4510: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
4520: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4530: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
4540: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4550: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
4560: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
4570: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4580: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
4590: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
45a0: 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d  codeBase = assem
45b0: 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d  bly.CodeBase;...
45c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
45d0: 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
45e0: 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65  OrEmpty(codeBase
45f0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
4600: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
4610: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
4620: 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e       Uri uri = n
4630: 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29  ew Uri(codeBase)
4640: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4650: 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c   string localFil
4660: 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61  eName = uri.Loca
4670: 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  lPath;....      
4680: 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c          if (!Fil
4690: 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69  e.Exists(localFi
46a0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
46c0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
46d0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
46e0: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
46f0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
4700: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
4710: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c          localFil
4720: 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
4730: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
4740: 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43       string xmlC
4750: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
4760: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20  Path.Combine(.. 
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4780: 20 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43   directory, XmlC
4790: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d  onfigFileName);.
47a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
47b0: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
47c0: 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  (xmlConfigFileNa
47d0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
47e0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
47f0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
4800: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
4810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4820: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
4830: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4850: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
4860: 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  (StringFormat(..
4870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4880: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
4890: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
48a0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
48b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48c0: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
48d0: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e   pre-loader foun
48e0: 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  d XML configurat
48f0: 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20  ion file " +..  
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64          "via cod
4920: 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65  e base for curre
4930: 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
4940: 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22  ssembly: \"{0}\"
4950: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
4960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 6d                xm
4970: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
4980: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
4990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
49b0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
49e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
49f0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
4a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
4a10: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
4a20: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
4a30: 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  me = localFileNa
4a40: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
4a50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
4a60: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
4a70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4a80: 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e        List<strin
4a90: 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c  g> matches = nul
4aa0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
4ab0: 20 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72      if (CheckFor
4ac0: 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64  ArchitecturesAnd
4ad0: 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74  Platforms(direct
4ae0: 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73  ory, ref matches
4af0: 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  ) > 0)..        
4b00: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
4b10: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
4b20: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
4b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4b40: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
4b50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b70: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
4b80: 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ne(StringFormat(
4b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
4bb0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
4bc0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4be0: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
4bf0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f  ry pre-loader fo
4c00: 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64  und native sub-d
4c10: 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a  irectories " +..
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c30: 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63            "via c
4c40: 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72  ode base for cur
4c50: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
4c60: 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d   assembly: \"{0}
4c70: 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  \"",..          
4c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c90: 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74  ListToString(mat
4ca0: 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f  ches))); /* thro
4cb0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
4cc0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
4ce0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
4cf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d10: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d30: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d50: 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c  fileName = local
4d60: 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4d80: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
4d90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
4da0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4db0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
4dc0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
4dd0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
4de0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
4df0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
4e00: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
4e10: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
4e20: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
4e30: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4e40: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
4e50: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4e60: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
4e70: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
4e80: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ea0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4eb0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
4ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ed0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
4ee0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
4ef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f00: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
4f10: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
4f20: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65  er failed to che
4f30: 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b  ck code base " +
4f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f50: 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72          "for cur
4f60: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
4f70: 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c   assembly: {0}",
4f80: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
4f90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4fa0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
4fb0: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
4fc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
4fe0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
4ff0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
5000: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
5010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
5020: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
5030: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
5040: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5090: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
50a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
50b0: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
50c0: 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f 72  rns the director
50d0: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
50e0: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
50f0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  ng..      /// ex
5100: 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f  ecuted...      /
5110: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5120: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
5130: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
5140: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
5150: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
5160: 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65  rently being exe
5170: 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  cuted -OR- null 
5180: 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74  if..      /// it
5190: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
51a0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
51b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
51c0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
51d0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73  ic string GetAss
51e0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
51f0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
5200: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
5210: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5220: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
5230: 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
5240: 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
5250: 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
5260: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
5270: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
5280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5290: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
52a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
52b0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
52c0: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
52d0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
52e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
52f0: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
5300: 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e  lyName assemblyN
5310: 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47  ame = assembly.G
5320: 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  etName();....   
5330: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
5340: 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
5350: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5360: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
5370: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
5380: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
5390: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f   assemblyName.Co
53a0: 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a  deBase;..#else..
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
53c0: 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79   (!CheckAssembly
53d0: 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c  CodeBase(assembl
53e0: 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29  y, ref fileName)
53f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
5400: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
5410: 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f  assembly.Locatio
5420: 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  n;..#endif....  
5430: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5440: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
5450: 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d  mpty(fileName)).
5460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5470: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
5480: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5490: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
54a0: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
54b0: 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61  ctoryName(fileNa
54c0: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
54d0: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
54e0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
54f0: 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20  irectory))..    
5500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5510: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
5520: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5530: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20  rn directory;.. 
5540: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
5550: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
5560: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
5570: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
5580: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
5590: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
55a0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
55b0: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
55c0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
55d0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
55e0: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
55f0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
5600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
5610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5620: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
5630: 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74  ine(StringFormat
5640: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5650: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
5660: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
5670: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
5680: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
5690: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
56a0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
56b0: 20 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22   get directory "
56c0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
56d0: 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63            "for c
56e0: 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
56f0: 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d  ng assembly: {0}
5700: 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
5710: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
5720: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5730: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
5740: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5760: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
5770: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
5780: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
5790: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
57a0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
57b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
57c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
57d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
57e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
5820: 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69      #region Opti
5830: 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69  onal Native SQLi
5840: 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
5850: 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
5860: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20     //..      // 
5870: 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20  NOTE: If we are 
5880: 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20  looking for the 
5890: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
58a0: 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c  DLL ("sqlite3.dl
58b0: 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20  l"),..      //  
58c0: 20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70       the interop
58d0: 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e   DLL ("SQLite.In
58e0: 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20  terop.dll"), or 
58f0: 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
5900: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
5910: 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61        .NET Compa
5920: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65  ct Framework, we
5930: 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20   should include 
5940: 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20  this code (only 
5950: 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  if the..      //
5960: 20 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68         feature h
5970: 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e  as actually been
5980: 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73   enabled).  This
5990: 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74   code would be t
59a0: 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  otally..      //
59b0: 20 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74         redundant
59c0: 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20   if this module 
59d0: 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64  has been bundled
59e0: 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d   into the mixed-
59f0: 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  mode..      //  
5a00: 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a       assembly...
5a10: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51        //..#if SQ
5a20: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
5a30: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
5a40: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
5a50: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d  PACTFRAMEWORK...
5a60: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
5a70: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63   // NOTE: Only c
5a80: 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61  ompile in the na
5a90: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
5aa0: 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68  -load code if th
5ab0: 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20  e feature..     
5ac0: 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65   //       has be
5ad0: 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74  en enabled for t
5ae0: 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20  his build...    
5af0: 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41    //..#if PRELOA
5b00: 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
5b10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5b30: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
5b40: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
5b50: 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67  iable containing
5b60: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
5b70: 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
5b80: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
5b90: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
5ba0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5bb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5bc0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
5bd0: 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45  nly string PROCE
5be0: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
5bf0: 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  E =..          "
5c00: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
5c10: 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20  ECTURE";....    
5c20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5c70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5c80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
5c90: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
5ca0: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
5cb0: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
5cc0: 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d  n32 LoadLibrary.
5cd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
5ce0: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
5cf0: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
5d00: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
5d10: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
5d20: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
5d30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5d40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
5d50: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
5d60: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
5d70: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
5d80: 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62  e executable lib
5d90: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
5da0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5db0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5dc0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5dd0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
5de0: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
5df0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
5e00: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
5e10: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5e20: 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  s>..#if !PLATFOR
5e30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5e40: 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  RK..      [DllIm
5e50: 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c  port("kernel32",
5e60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
5e70: 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64  DllImport("cored
5e80: 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ll",..#endif..  
5e90: 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43          CallingC
5ea0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5eb0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
5ec0: 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20  napi, CharSet = 
5ed0: 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23  CharSet.Auto,..#
5ee0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5ef0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
5f00: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
5f10: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
5f20: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
5f30: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
5f40: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
5f50: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
5f60: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 70   true)]..      p
5f70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78  rivate static ex
5f80: 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64  tern IntPtr Load
5f90: 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20 66  Library(string f
5fa0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
5fb0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6000: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
6010: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6020: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6030: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
6040: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
6050: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
6060: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
6070: 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49  Win32 GetSystemI
6080: 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  nfo..      /// f
6090: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
60a0: 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
60b0: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
60c0: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
60d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
60e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
60f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6100: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6110: 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20  systemInfo">..  
6120: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74      /// The syst
6130: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
6140: 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20 66  tructure to be f
6150: 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20  illed in by the 
6160: 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
6170: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6180: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
6190: 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69  "coredll", Calli
61a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
61b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
61c0: 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20  .Winapi)]..     
61d0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
61e0: 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53  extern void GetS
61f0: 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59  ystemInfo(out SY
6200: 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d  STEM_INFO system
6210: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6270: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6280: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65        /// This e
6290: 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61  numeration conta
62a0: 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65  ins the possible
62b0: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
62c0: 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
62d0: 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72   /// architectur
62e0: 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73  e field of the s
62f0: 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
6300: 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  n structure...  
6310: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6320: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
6330: 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72  e enum Processor
6340: 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75  Architecture : u
6350: 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a  short /* COMPAT:
6360: 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20   Win32. */..    
6370: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
6380: 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20  ntel = 0,..     
6390: 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a       MIPS = 1,..
63a0: 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20            Alpha 
63b0: 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2,..          
63c0: 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20  PowerPC = 3,..  
63d0: 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c          SHx = 4,
63e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20  ..          ARM 
63f0: 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 5,..          
6400: 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20  IA64 = 6,..     
6410: 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37       Alpha64 = 7
6420: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49  ,..          MSI
6430: 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20  L = 8,..        
6440: 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20    AMD64 = 9,..  
6450: 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f          IA32_on_
6460: 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20  Win64 = 10,..   
6470: 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d         Unknown =
6480: 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d   0xFFFF..      }
6490: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
64f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6500: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
6510: 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f  re contains info
6520: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
6530: 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74  e current comput
6540: 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  er. This..      
6550: 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65  /// includes the
6560: 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c   processor type,
6570: 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f   page size, memo
6580: 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74  ry addresses, et
6590: 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  c...      /// </
65a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
65b0: 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
65c0: 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
65d0: 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72 69  ial)]..      pri
65e0: 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53 54  vate struct SYST
65f0: 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b  EM_INFO..      {
6600: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
6610: 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68  ic ProcessorArch
6620: 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73  itecture wProces
6630: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
6640: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
6650: 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72  ic ushort wReser
6660: 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ved; /* NOT USED
6670: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
6680: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67  ublic uint dwPag
6690: 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53  eSize; /* NOT US
66a0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
66b0: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c   public IntPtr l
66c0: 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74  pMinimumApplicat
66d0: 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e  ionAddress; /* N
66e0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
66f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
6700: 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70  Ptr lpMaximumApp
6710: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
6720: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
6730: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
6740: 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50  c uint dwActiveP
6750: 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a  rocessorMask; /*
6760: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
6770: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
6780: 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72  int dwNumberOfPr
6790: 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54  ocessors; /* NOT
67a0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
67b0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
67c0: 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b  dwProcessorType;
67d0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
67e0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
67f0: 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74  c uint dwAllocat
6800: 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20  ionGranularity; 
6810: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
6820: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
6830: 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73   ushort wProcess
6840: 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20  orLevel; /* NOT 
6850: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
6860: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
6870: 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73   wProcessorRevis
6880: 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ion; /* NOT USED
6890: 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65   */..      }..#e
68a0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6900: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
6910: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f   Data..      ///
6920: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6930: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
6940: 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d   module file nam
6950: 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
6960: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
6970: 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  or null...      
6980: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6990: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
69a0: 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c  atic string _SQL
69b0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
69c0: 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
69d0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
69e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
6a30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6a40: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6a50: 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20  dule handle for 
6a60: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
6a70: 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65  e library or the
6a80: 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f   value..      //
6a90: 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a  / IntPtr.Zero...
6aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6ab0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
6ac0: 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74  ate static IntPt
6ad0: 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  r _SQLiteNativeM
6ae0: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e  oduleHandle = In
6af0: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
6b00: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6b10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6b70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6b80: 53 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65  Searches for the
6b90: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
6ba0: 69 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69  ibrary in the di
6bb0: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
6bc0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
6bd0: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
6be0: 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
6bf0: 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ted as well as t
6c00: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
6c10: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72  y..      /// for
6c20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
6c30: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
6c40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
6c50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6c60: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
6c70: 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
6c80: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
6c90: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
6ca0: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
6cb0: 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
6cc0: 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20   to the base..  
6cd0: 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
6ce0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
6cf0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
6d00: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
6d10: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
6d20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6d30: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
6d40: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
6d50: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
6d60: 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
6d70: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
6d80: 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
6d90: 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20   the name..     
6da0: 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65   /// of the imme
6db0: 64 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20  diate directory 
6dc0: 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74  (i.e. the offset
6dd0: 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64   from the base d
6de0: 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20  irectory)..     
6df0: 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20   /// containing 
6e00: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
6e10: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
6e20: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6e30: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
6e40: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
6e50: 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73  on-zero (success
6e60: 29 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  ) if the native 
6e70: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
6e80: 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77  as found; otherw
6e90: 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ise,..      /// 
6ea0: 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d  zero (failure)..
6eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
6ec0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
6ed0: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
6ee0: 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
6ef0: 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
6f00: 72 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44  ref string baseD
6f10: 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20  irectory,       
6f20: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
6f30: 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
6f40: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6f50: 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f  ecture /* out */
6f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
6f70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6f80: 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
6f90: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
6fa0: 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
6fb0: 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46  SQLite_NoSearchF
6fc0: 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  orDirectory", nu
6fd0: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
6fe0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6ff0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7000: 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c  false; /* DISABL
7010: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
7020: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
7030: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7040: 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
7050: 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69   list of base di
7060: 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72  rectories and pr
7070: 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d  ocessor/platform
7080: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7090: 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65       names.  The
70a0: 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65  se lists will be
70b0: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f   used to help lo
70c0: 63 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d  cate the native.
70d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
70e0: 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20      SQLite core 
70f0: 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65  library (or inte
7100: 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f  rop assembly) to
7110: 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a   pre-load into..
7120: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7130: 20 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e     this process.
7140: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
7150: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
7160: 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d  [] directories =
7170: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7180: 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72    GetAssemblyDir
7190: 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21  ectory(),..#if !
71a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
71b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
71c0: 20 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61           AppDoma
71d0: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
71e0: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  .BaseDirectory,.
71f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
7200: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
7210: 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44     string[] subD
7220: 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a  irectories = {..
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
7240: 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
7250: 65 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61  ecture(), GetPla
7260: 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d  tformName(null).
7270: 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d  .          };...
7280: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
7290: 63 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63  ch (string direc
72a0: 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72  tory in director
72b0: 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
72c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
72d0: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d   if (directory =
72e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
72f0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
7300: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
7310: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
7320: 74 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f  tring subDirecto
7330: 72 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f  ry in subDirecto
7340: 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ries)..         
7350: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75            if (su
7370: 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  bDirectory == nu
7380: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
7390: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
73a0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
73b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
73c0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
73d0: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
73e0: 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20  h.Combine(..    
73f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7400: 20 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64    Path.Combine(d
7410: 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69 72  irectory, subDir
7420: 65 63 74 6f 72 79 29 2c 20 53 51 4c 49 54 45 5f  ectory), SQLITE_
7430: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
7440: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7460: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
7470: 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c  e SQLite DLL fil
7480: 65 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e  e exists, return
7490: 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
74a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
74b0: 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72        Prior to r
74c0: 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68  eturning, set th
74d0: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
74e0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
74f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7500: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7510: 74 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65  tecture to refle
7520: 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d  ct the location.
7530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7540: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72     //       wher
7550: 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d  e it was found..
7560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7570: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7580: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
7590: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
75a0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
75b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
75c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75d0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
75e0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
75f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7600: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
7610: 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69 72  tecture = subDir
7620: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
7630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7640: 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46  eturn true; /* F
7650: 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  OUND */..       
7660: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7670: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7680: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
76a0: 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55  alse; /* NOT FOU
76b0: 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  ND */..      }..
76c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7710: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
7720: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
7730: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
7740: 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 64  turns the base d
7750: 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20  irectory of the 
7760: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
7770: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ion..      /// d
7780: 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  omain...      //
7790: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
77a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
77b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
77c0: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
77d0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
77e0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
77f0: 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  in -OR- null if 
7800: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  it..      /// ca
7810: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
7820: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
7830: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
7840: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
7850: 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44 69  string GetBaseDi
7860: 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
7870: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
7880: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
7890: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
78a0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
78b0: 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
78c0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a  nment variable..
78d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
78e0: 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20 69     is set, use i
78f0: 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74  t verbatim for t
7900: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
7910: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
7920: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7930: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47  ng directory = G
7940: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22  etSettingValue("
7950: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
7960: 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20  seDirectory",.. 
7970: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c               nul
7980: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
7990: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21   if (directory !
79a0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
79b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
79c0: 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20  rectory;....#if 
79d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
79e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
79f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7a00: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
7a10: 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
7a20: 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69  te_UseAssemblyDi
7a30: 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e  rectory" environ
7a40: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
7a50: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
7a60: 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79  e is set (to any
7a70: 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74 74  thing), then att
7a80: 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 0d  empt to use the.
7a90: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7aa0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63 6f      directory co
7ab0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72  ntaining the cur
7ac0: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
7ad0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
7ae0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
7af0: 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  .e. System.Data.
7b00: 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64 20  SQLite) intsead 
7b10: 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  of the applicati
7b20: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  on..          //
7b30: 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62 61         domain ba
7b40: 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
7b50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7b60: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
7b70: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
7b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7b90: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73  PreLoadSQLite_Us
7ba0: 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  eAssemblyDirecto
7bb0: 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  ry", null) != nu
7bc0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
7bd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7be0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
7bf0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
7c00: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
7c10: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
7c20: 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
7c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7c40: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
7c50: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
7c60: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
7c70: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
7c80: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
7c90: 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
7ca0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
7cb0: 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y of the..      
7cc0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72      //       cur
7cd0: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
7ce0: 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
7cf0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7d00: 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61    return AppDoma
7d10: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
7d20: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d  .BaseDirectory;.
7d30: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
7d40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7d50: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
7d60: 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
7d70: 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63 74  using the direct
7d80: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ory containing..
7d90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7da0: 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79     the currently
7db0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
7dc0: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  bly...          
7dd0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
7de0: 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79  turn GetAssembly
7df0: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65  Directory();..#e
7e00: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
7e10: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7e70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7e80: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
7e90: 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
7ea0: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
7eb0: 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66  e requires a suf
7ec0: 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  fix..      /// a
7ed0: 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65  nd adds it if ne
7ee0: 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
7ef0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7f00: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
7f10: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
7f20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
7f30: 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69   original dynami
7f40: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
7f50: 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70  ile name to insp
7f60: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
7f70: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
7f80: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
7f90: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e       /// The dyn
7fa0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
7fb0: 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73  y file name, pos
7fc0: 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74  sibly modified t
7fd0: 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20  o include an..  
7fe0: 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f      /// extensio
7ff0: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
8000: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8010: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
8020: 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69  tring FixUpDllFi
8030: 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  leName(..       
8040: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
8050: 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  me /* in */..   
8060: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
8070: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
8080: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
8090: 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
80a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c                Pl
80c0: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
80d0: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
80e0: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
80f0: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
8100: 20 20 20 20 20 20 20 69 66 20 28 28 70 6c 61 74         if ((plat
8110: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
8120: 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d  rmID.Win32S) ||.
8130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8140: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
8150: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
8160: 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20  32Windows) ||.. 
8170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8180: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
8190: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
81a0: 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  NT) ||..        
81b0: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
81c0: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
81d0: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
81e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8200: 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e  if (!fileName.En
8210: 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78  dsWith(DllFileEx
8220: 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  tension,..      
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8240: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
8250: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
8260: 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
8270: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8290: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
82a0: 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78  Name + DllFileEx
82b0: 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  tension;..      
82c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
82e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
82f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8300: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
8310: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
8320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8360: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
8370: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8380: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
8390: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72  d returns the pr
83a0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
83b0: 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
83c0: 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  ent..      /// p
83d0: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
83e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
83f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8400: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8410: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
8420: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
8430: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
8440: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
8450: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
8460: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
8470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
8480: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
8490: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
84a0: 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72  ing GetProcessor
84b0: 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a  Architecture()..
84c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
84d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
84e0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
84f0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
8500: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
8510: 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65  cture" environme
8520: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  nt..          //
8530: 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20         variable 
8540: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
8550: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
8560: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f  current processo
8570: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  r..          // 
8580: 20 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75        architectu
8590: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  re...          /
85a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
85b0: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
85c0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
85d0: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
85f0: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
8600: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8610: 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  ", null);....   
8620: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
8630: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8640: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
8650: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8660: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
8670: 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  cture;....      
8680: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8690: 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c    // BUGBUG: Wil
86a0: 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62 65  l this always be
86b0: 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20   reliable?..    
86c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
86d0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
86e0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
86f0: 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52 4f 43  ettingValue(PROC
8700: 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
8710: 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  RE, null);....  
8720: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8770: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8780: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8790: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
87a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b           // HACK
87b0: 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 20 22  : Check for an "
87c0: 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69 74 75  impossible" situ
87d0: 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 70  ation.  If the p
87e0: 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20 20  ointer size..   
87f0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8800: 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68 65 20  is 32-bits, the 
8810: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8820: 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20 62 65  ecture cannot be
8830: 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20   "AMD64"...     
8840: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 6e       //       In
8850: 20 74 68 61 74 20 63 61 73 65 2c 20 77 65 20 61   that case, we a
8860: 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69  re almost certai
8870: 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20 62 75  nly hitting a bu
8880: 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g in the..      
8890: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65      //       ope
88a0: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 6e  rating system an
88b0: 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74 75 64  d/or Visual Stud
88c0: 69 6f 20 74 68 61 74 20 63 61 75 73 65 73 20 74  io that causes t
88d0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
88e0: 20 20 20 20 20 20 20 50 52 4f 43 45 53 53 4f 52         PROCESSOR
88f0: 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 65 6e  _ARCHITECTURE en
8900: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
8910: 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  le to contain th
8920: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
8930: 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61 6c 75        wrong valu
8940: 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d  e in some circum
8950: 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61 73 65  stances.  Please
8960: 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b 65 74   refer to ticket
8970: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
8980: 20 20 20 20 20 5b 39 61 63 39 38 36 32 36 31 31       [9ac9862611
8990: 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e  ] for further in
89a0: 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
89b0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
89c0: 20 20 20 20 69 66 20 28 28 49 6e 74 50 74 72 2e      if ((IntPtr.
89d0: 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69  Size == sizeof(i
89e0: 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20  nt)) &&..       
89f0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45 71         String.Eq
8a00: 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72 41 72  uals(processorAr
8a10: 63 68 69 74 65 63 74 75 72 65 2c 20 22 41 4d 44  chitecture, "AMD
8a20: 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  64",..          
8a30: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
8a40: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
8a50: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
8a60: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8a70: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8a80: 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
8a90: 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
8aa0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8ab0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e     // NOTE: When
8ac0: 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61 62   tracing is enab
8ad0: 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f 72  led, save the or
8ae0: 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74 65  iginally detecte
8af0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
8b00: 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
8b10: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
8b20: 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67   before changing
8b30: 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
8b40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8b50: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 61 76        string sav
8b60: 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  edProcessorArchi
8b70: 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65 73  tecture = proces
8b80: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
8b90: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
8ba0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8bb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8bc0: 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61  OTE: We know tha
8bd0: 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
8be0: 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ems that return 
8bf0: 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20 20  "AMD64" as..    
8c00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8c10: 20 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72     the processor
8c20: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 61 72   architecture ar
8c30: 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75 70  e actually a sup
8c40: 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20 20  erset of..      
8c50: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8c60: 20 74 68 65 20 22 78 38 36 22 20 70 72 6f 63 65   the "x86" proce
8c70: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
8c80: 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72 65  e; therefore, re
8c90: 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  turn..          
8ca0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78 38      //       "x8
8cb0: 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69 6e  6" when the poin
8cc0: 74 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d 62  ter size is 32-b
8cd0: 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  its...          
8ce0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8cf0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
8d00: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 22 78  rchitecture = "x
8d10: 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  86";....#if !NET
8d20: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
8d30: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
8d50: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
8d60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8d70: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8d80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8d90: 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77  OTE: Show that w
8da0: 65 20 68 69 74 20 61 20 66 61 69 72 6c 79 20 75  e hit a fairly u
8db0: 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e  nusual situation
8dc0: 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20   (i.e...        
8dd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8de0: 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22 20 70     the "wrong" p
8df0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
8e00: 63 74 75 72 65 20 77 61 73 20 64 65 74 65 63 74  cture was detect
8e10: 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ed)...          
8e20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
8e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
8e40: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
8e50: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
8e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e70: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
8e80: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ea0: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8eb0: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8ec0: 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
8ed0: 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
8ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ef0: 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
8f00: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8f10: 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
8f20: 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
8f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f40: 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
8f50: 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
8f60: 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
8f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f80: 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
8f90: 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
8fa0: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
8fb0: 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fd0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
8fe0: 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
8ff0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
9000: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9010: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
9020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9040: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
9050: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9060: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
9070: 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
9080: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
9090: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
90a0: 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
90b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
90c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
90d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
90e0: 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
90f0: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
9100: 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
9110: 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
9120: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
9130: 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
9140: 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
9150: 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
9160: 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
9170: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9180: 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
9190: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
91a0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
91b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
91c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
91d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
91f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9200: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
9210: 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
9220: 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
9230: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
9240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9250: 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
9260: 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
9270: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9280: 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92a0: 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
92b0: 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
92c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
92e0: 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45 4d            SYSTEM
92f0: 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f  _INFO systemInfo
9300: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9310: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9320: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9330: 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65 20  NOTE: Query the 
9340: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
9350: 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c  on via P/Invoke,
9360: 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20   thus..         
9370: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9380: 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74    filling the st
9390: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
93a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93c0: 20 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28    GetSystemInfo(
93d0: 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b  out systemInfo);
93e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
93f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9410: 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20  OTE: Return the 
9420: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9430: 65 63 74 75 72 65 20 76 61 6c 75 65 20 61 73 20  ecture value as 
9440: 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  a string...     
9450: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9470: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
9480: 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20 20 20  itecture =..    
9490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94a0: 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72    systemInfo.wPr
94b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
94c0: 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  ure.ToString();.
94d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
94e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
94f0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
9500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9510: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
9520: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
9530: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9540: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9550: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9560: 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75  NOTE: Upon failu
9570: 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20 65 6d  re, return an em
9580: 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69  pty string.  Thi
9590: 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a  s will prevent..
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
95b0: 20 20 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69         the calli
95c0: 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63  ng method from c
95d0: 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69 73 20  onsidering this 
95e0: 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20  method call a.. 
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9600: 20 20 20 20 20 20 22 66 61 69 6c 75 72 65 22 2e        "failure".
9610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9620: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
9630: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
9640: 74 65 63 74 75 72 65 20 3d 20 53 74 72 69 6e 67  tecture = String
9650: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20  .Empty;..       
9660: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
9670: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
96c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
96d0: 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  urn processorArc
96e0: 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20  hitecture;..    
96f0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
9700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9740: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9750: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9760: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
9770: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
9780: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
9790: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
97a0: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
97b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
97c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
97d0: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
97e0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
97f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9800: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9810: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
9820: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
9830: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
9840: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9850: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9860: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9870: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
9880: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
9890: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
98a0: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
98b0: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
98c0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
98d0: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
98e0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
98f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
9900: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
9910: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
9920: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9930: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
9940: 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f  tecture /* in */
9950: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
9960: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9970: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
9980: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
9990: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
99a0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
99b0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
99c0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
99d0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
99e0: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
99f0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72  IsNullOrEmpty(pr
9a00: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9a10: 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ure))..         
9a20: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
9a30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
9a40: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
9a50: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
9a60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9a70: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
9a80: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
9a90: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ab0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
9ad0: 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ring platformNam
9ae0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9af0: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
9b00: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
9b10: 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c  tforms.TryGetVal
9b20: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
9b30: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
9b40: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9b50: 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61  , out platformNa
9b60: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
9b70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9b80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9b90: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20  platformName;.. 
9ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9bc0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9bd0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
9be0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9c40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9c50: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f  / Attempts to lo
9c60: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
9c70: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62 61 73  Lite library bas
9c80: 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66  ed on the specif
9c90: 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ied..      /// d
9ca0: 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f  irectory and pro
9cb0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
9cc0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
9cd0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9ce0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9cf0: 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79  e="baseDirectory
9d00: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
9d10: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
9d20: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
9d30: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
9d40: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
9d50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
9d60: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
9d70: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
9d80: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
9d90: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
9da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
9db0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9dc0: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
9dd0: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
9de0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9df0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
9e00: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
9e10: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
9e20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
9e30: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
9e40: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
9e50: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
9e60: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
9e70: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
9e80: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
9e90: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
9ea0: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
9eb0: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
9ec0: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
9ed0: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
9ee0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
9ef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
9f00: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
9f10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
9f20: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
9f30: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
9f40: 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61 74 69  e candidate nati
9f50: 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e  ve module file n
9f60: 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c  ame to load will
9f70: 20 62 65 20 73 74 6f 72 65 64 20 68 65 72 65 2c   be stored here,
9f80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e  ..      /// if n
9f90: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
9fa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9fb0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9fc0: 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75  name="nativeModu
9fd0: 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20  leHandle">..    
9fe0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
9ff0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61   module handle a
a000: 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f  s returned by Lo
a010: 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c 20 62  adLibrary will b
a020: 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20 20 20  e stored..      
a030: 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e 65 63  /// here, if nec
a040: 65 73 73 61 72 79 2e 20 20 54 68 69 73 20 76 61  essary.  This va
a050: 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e 74 50  lue will be IntP
a060: 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65 20 63  tr.Zero if the c
a070: 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  all to..      //
a080: 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 66 61  / LoadLibrary fa
a090: 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ils...      /// 
a0a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
a0b0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
a0c0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
a0d0: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
a0e0: 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61 64 65  module was loade
a0f0: 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 3b 20  d successfully; 
a100: 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20  otherwise,..    
a110: 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20    /// zero...   
a120: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
a130: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
a140: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 65   static bool Pre
a150: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a  LoadSQLiteDll(..
a160: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a170: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
a180: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
a190: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
a1a0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
a1b0: 72 63 68 69 74 65 63 74 75 72 65 2c 20 20 20 20  rchitecture,    
a1c0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
a1d0: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 6e      ref string n
a1e0: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
a1f0: 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ame, /* out */..
a200: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
a210: 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c  tPtr nativeModul
a220: 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75  eHandle    /* ou
a230: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
a240: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
a250: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a260: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
a270: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62 61  the specified ba
a280: 73 65 20 64 69 72 65 63 74 6f 72 79 20 69 73 20  se directory is 
a290: 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65  null, use the de
a2a0: 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20  fault..         
a2b0: 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20   //       (i.e. 
a2c0: 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d  attempt to autom
a2d0: 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20  atically detect 
a2e0: 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  it)...          
a2f0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
a300: 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20   (baseDirectory 
a310: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
a320: 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
a330: 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44  ctory = GetBaseD
a340: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
a350: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a360: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
a370: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
a380: 71 75 65 72 79 20 74 68 65 20 62 61 73 65 20 64  query the base d
a390: 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e  irectory, stop n
a3a0: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
a3b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
a3c0: 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d  (baseDirectory =
a3d0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a3e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a3f0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a400: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a410: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
a420: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
a430: 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e 20  brary exists in 
a440: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
a450: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ry..          //
a460: 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20 73         itself, s
a470: 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
a480: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a490: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
a4a0: 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
a4b0: 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  Name(Path.Combin
a4c0: 65 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  e(baseDirectory,
a4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a4e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d  SQLITE_DLL));...
a4f0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
a500: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
a510: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
a520: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
a530: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a540: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
a550: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
a560: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
a570: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
a580: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
a590: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
a5a0: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
a5b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a5c0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
a5d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
a5e0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
a5f0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
a600: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
a610: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
a620: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
a630: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a640: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
a650: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
a660: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
a670: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
a680: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
a690: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a6a0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
a6b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
a6c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a6d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a6e0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a6f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a700: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
a710: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
a720: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
a730: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
a740: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
a750: 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
a760: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
a770: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
a780: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
a790: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
a7a0: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
a7b0: 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f  FileName(Path.Co
a7c0: 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69  mbine(Path.Combi
a7d0: 6e 65 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  ne(baseDirectory
a7e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a7f0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
a800: 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f  ecture), SQLITE_
a810: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
a820: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a830: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
a840: 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65  e file name base
a850: 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73  d on the process
a860: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
a870: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
a880: 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c  // is not found,
a890: 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20 61   try using the a
a8a0: 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f  ssociated platfo
a8b0: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
a8c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a8d0: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
a8e0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
a8f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a900: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a910: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
a920: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
a930: 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72  translate the pr
a940: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
a950: 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20  ture to a..     
a960: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a970: 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e    platform name.
a980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a990: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a9a0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
a9b0: 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66  mName = GetPlatf
a9c0: 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f  ormName(processo
a9d0: 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d  rArchitecture);.
a9e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a9f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
aa00: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
aa10: 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e  e failed to tran
aa20: 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f  slate the platfo
aa30: 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f  rm name, stop no
aa40: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w...            
aa50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
aa60: 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d      if (platform
aa70: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
aaa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aab0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
aac0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
aad0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
aae0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
aaf0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
ab00: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
ab10: 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
ab20: 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61  ry using the pla
ab30: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
ab40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
ab60: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
ab70: 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f  FileName(Path.Co
ab80: 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69  mbine(Path.Combi
ab90: 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne(..           
aba0: 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
abb0: 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61  tory, platformNa
abc0: 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29  me), SQLITE_DLL)
abd0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
abe0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
abf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
ac00: 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20  f the file does 
ac10: 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20  not exist, skip 
ac20: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69  trying to load i
ac30: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
ac40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ac50: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
ac60: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
ac70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ac80: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
ac90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
aca0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
acb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
acc0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
acd0: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
ace0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
acf0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
ad00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ad10: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ad30: 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61  / NOTE: Show exa
ad40: 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61 72  ctly where we ar
ad50: 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  e trying to load
ad60: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
ad70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ad80: 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c  /       SQLite l
ad90: 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20  ibrary from...  
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
adc0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
add0: 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d  eLine(StringForm
ade0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
adf0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
ae00: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
ae10: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
ae30: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
ae40: 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69  e-loader is tryi
ae50: 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ng to load nativ
ae60: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
ae70: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
ae80: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
ae90: 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61  0}\"...", fileNa
aea0: 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
aeb0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
aec0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
aed0: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
aee0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
af00: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
af10: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
af20: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
af30: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
af40: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
af50: 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20  Attempt to load 
af60: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
af70: 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65  ry.  This will e
af80: 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ither..         
af90: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
afa0: 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74  turn a valid nat
afb0: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
afc0: 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72  e, return IntPtr
afd0: 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20  .Zero,..        
afe0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
aff0: 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70  r throw an excep
b000: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
b010: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b020: 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
b030: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69  uleFileName = fi
b040: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
b050: 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
b060: 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4c 6f 61 64  uleHandle = Load
b070: 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65  Library(fileName
b080: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b090: 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69      return (nati
b0a0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21  veModuleHandle !
b0b0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
b0c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
b0d0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
b0e0: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
b0f0: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  AD..          ca
b100: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
b110: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
b120: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
b130: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
b140: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
b150: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
b160: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
b170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b180: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
b190: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b1a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b1c0: 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72   NOTE: First, gr
b1d0: 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33  ab the last Win3
b1e0: 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d  2 error number..
b1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b200: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b210: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73           int las
b220: 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c  tError = Marshal
b230: 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72  .GetLastWin32Err
b240: 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or(); /* throw *
b250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
b260: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
b280: 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65  NOTE: Show where
b290: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f   we failed to lo
b2a0: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
b2b0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
b2c0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b2d0: 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c   library from al
b2e0: 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e  ong with the Win
b2f0: 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  32 error code an
b300: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
b310: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
b320: 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74  ception informat
b330: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
b340: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
b360: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
b370: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
b380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b390: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
b3a0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
b3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3c0: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
b3d0: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
b3e0: 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
b3f0: 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
b400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b410: 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
b420: 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61  y \"{0}\" (getLa
b430: 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20  stError = {1}): 
b440: 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
b450: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
b460: 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72  eName, lastError
b470: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
b480: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
b490: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
b4a0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
b4b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
b4d0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
b4e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
b4f0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
b500: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
b510: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
b520: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
b530: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
b540: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
b550: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
b5a0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
b5b0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b5c0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
b5d0: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
b5e0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
b5f0: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
b600: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
b610: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
b620: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
b630: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
b640: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
b650: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
b660: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
b670: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
b680: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
b690: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
b6a0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
b6b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
b6c0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
b6d0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
b6e0: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
b6f0: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
b700: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
b710: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
b720: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
b730: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
b740: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
b750: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
b760: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
b770: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
b780: 65 72 6f 70 2e 30 39 38 2e 64 6c 6c 22 3b 0d 0a  erop.098.dll";..
b790: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
b7a0: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
b7b0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
b7c0: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
b7d0: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
b7e0: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
b7f0: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
b800: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
b810: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
b820: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
b830: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
b840: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
b850: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
b860: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
b870: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
b880: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
b890: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
b8a0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
b8b0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
b8c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
b8d0: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
b8e0: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
b8f0: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
b900: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
b910: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
b920: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
b930: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
b940: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
b950: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
b960: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
b970: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
b980: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
b990: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
b9a0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
b9b0: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
b9c0: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
b9d0: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
b9e0: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
b9f0: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
ba00: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
ba10: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
ba20: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
ba30: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
ba40: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
ba50: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
ba60: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
ba70: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
ba80: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
ba90: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
baa0: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
bab0: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
bac0: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
bad0: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
bae0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
baf0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bb00: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bb10: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
bb20: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
bb30: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
bb40: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
bb50: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
bb60: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
bb70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bb80: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
bb90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
bba0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
bbb0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
bbc0: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
bbd0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
bbe0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
bbf0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
bc00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bc10: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
bc20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bc30: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
bc40: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
bc50: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
bc60: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
bc70: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
bc80: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
bc90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bca0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
bcb0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bcc0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
bcd0: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
bce0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
bcf0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
bd00: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
bd10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bd20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bd30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bd40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
bd50: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
bd60: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
bd70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
bd80: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
bd90: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
bda0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bdb0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
bdc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bdd0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
bde0: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
bdf0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
be00: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
be10: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
be20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
be30: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
be40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
be50: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
be60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
be70: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
be80: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
be90: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
bea0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
beb0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bec0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bed0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
bee0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
bef0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
bf00: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
bf10: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
bf20: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
bf30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bf40: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
bf50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bf60: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
bf70: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
bf80: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
bf90: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
bfa0: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
bfb0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
bfc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bfd0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
bfe0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
bff0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
c000: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
c010: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
c020: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
c030: 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
c040: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
c050: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c060: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
c070: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
c080: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
c090: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
c0a0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
c0b0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
c0c0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
c0d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c0e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
c0f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c100: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
c110: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
c120: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
c130: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
c140: 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
c150: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
c160: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c170: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
c180: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
c190: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
c1a0: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
c1b0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
c1c0: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
c1d0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
c1e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c1f0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c200: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c210: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
c220: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
c230: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66  p(IntPtr db, ref
c240: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
c250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c260: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
c270: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c280: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c290: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
c2a0: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
c2b0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
c2c0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
c2d0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
c2e0: 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
c2f0: 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69 6e 74  rRemain, ref int
c300: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
c310: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c320: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
c330: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c340: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c350: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
c360: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
c370: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
c380: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
c390: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
c3a0: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
c3b0: 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
c3c0: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65   ptrDataType, re
c3d0: 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  f IntPtr ptrColl
c3e0: 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74  Seq, ref int not
c3f0: 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72  Null, ref int pr
c400: 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e  imaryKey, ref in
c410: 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66 20 69  t autoInc, ref i
c420: 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20 69 6e  nt dtLen, ref in
c430: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
c440: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c450: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
c460: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c470: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
c480: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
c490: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
c4a0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
c4b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c4c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
c4d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c4e0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
c4f0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
c500: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
c510: 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20  tPtr p, ref int 
c520: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
c530: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c540: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
c550: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c560: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c   int sqlite3_mal
c570: 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70  loc_size_interop
c580: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
c590: 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a  if INTEROP_LOG..
c5a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c5b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
c5c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c5d0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c5e0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c5f0: 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72  config_log_inter
c600: 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  op();..#endif..#
c610: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
c620: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
c630: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
c640: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
c650: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
c660: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
c670: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
c680: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
c690: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
c6a0: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
c6b0: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
c6c0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
c6d0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
c6e0: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
c6f0: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
c700: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
c710: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
c720: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c730: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
c740: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c750: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
c760: 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73   interop_libvers
c770: 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ion();....    [D
c780: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c790: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
c7a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c7b0: 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
c7c0: 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a  _sourceid();....
c7d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c7e0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
c7f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c800: 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65   extern int inte
c810: 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  rop_compileoptio
c820: 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f  n_used(IntPtr zO
c830: 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  ptName);....    
c840: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c850: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c860: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c870: 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
c880: 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  op_compileoption
c890: 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a  _get(int N);....
c8a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c8b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
c8c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c8d0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c8e0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c8f0: 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e  close_interop(In
c900: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
c910: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c920: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
c930: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c940: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c950: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
c960: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74  ate_function_int
c970: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
c980: 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20  byte[] strName, 
c990: 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e  int nArgs, int n
c9a0: 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
c9b0: 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  ser, SQLiteCallb
c9c0: 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65  ack func, SQLite
c9d0: 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20  Callback fstep, 
c9e0: 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62  SQLiteFinalCallb
c9f0: 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20  ack ffinal, int 
ca00: 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d  needCollSeq);...
ca10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ca20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ca30: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ca40: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
ca50: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
ca60: 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f  _finalize_intero
ca70: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
ca80: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
ca90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
caa0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
cab0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
cac0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
cad0: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
cae0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
caf0: 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20  backup);....    
cb00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cb10: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
cb20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
cb30: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
cb40: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
cb50: 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
cb60: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
cb70: 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
cb80: 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
cb90: 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
cba0: 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
cbb0: 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
cbc0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cbd0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
cbe0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cbf0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
cc00: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
cc10: 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
cc20: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
cc30: 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
cc40: 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
cc50: 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
cc60: 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
cc70: 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
cc80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cc90: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
cca0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ccb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
ccc0: 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  e sqlite3_reset_
ccd0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
cce0: 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
ccf0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cd00: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
cd10: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cd20: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
cd30: 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nges_interop(Int
cd40: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
cd50: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
cd60: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
cd70: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
cd80: 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61  / The standard a
cd90: 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65  pi call equivale
cda0: 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65  nts of the above
cdb0: 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a   interop calls..
cdc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e      #region stan
cdd0: 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66  dard versions of
cde0: 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f   interop functio
cdf0: 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  ns....#if SQLITE
ce00: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
ce10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ce20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ce30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ce40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
ce50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
ce60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ce70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
ce80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ce90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
cea0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
ceb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
cec0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
ced0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50  lite3_close(IntP
cee0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
cef0: 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43  INTEROP_LEGACY_C
cf00: 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  LOSE..#if !PLATF
cf10: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cf20: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
cf30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cf40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cf50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
cf60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
cf70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
cf80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
cf90: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
cfa0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cfb0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
cfc0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
cfd0: 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64  lose_v2(IntPtr d
cfe0: 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a  b); /* 3.7.14+ *
cff0: 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  /..#endif....#if
d000: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d010: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d020: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d030: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d040: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d050: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d060: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d070: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d080: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d090: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d0a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
d0b0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
d0c0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
d0d0: 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
d0e0: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
d0f0: 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
d100: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
d110: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
d120: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
d130: 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
d140: 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
d150: 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
d160: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d170: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d180: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d190: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d1a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d1b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d1c0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d1d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d1e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d1f0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d200: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d210: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d220: 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
d230: 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ze(IntPtr stmt);
d240: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d250: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d260: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d270: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d280: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d290: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d2a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d2b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d2c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d2d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d2e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d2f0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
d300: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
d310: 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74  kup_finish(IntPt
d320: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
d330: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d340: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d350: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d360: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d370: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d380: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d390: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d3a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d3b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d3c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d3d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
d3e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
d3f0: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
d400: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
d410: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d420: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d430: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d440: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d450: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d460: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d470: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d480: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d490: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d4a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d4b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d4c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
d4d0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
d4e0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
d4f0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
d500: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d510: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d520: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d530: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d540: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d550: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d560: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d570: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d580: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d590: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d5a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d5b0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
d5c0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
d5d0: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
d5e0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
d5f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d600: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d610: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d620: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d630: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d640: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d650: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d660: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d670: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d680: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d690: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d6a0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
d6b0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
d6c0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
d6d0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d6e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d6f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d700: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d710: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d720: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d730: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d740: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d750: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d760: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d770: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d780: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d790: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d7a0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
d7b0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
d7c0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
d7d0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d7e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d7f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d800: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d810: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d820: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d830: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d840: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d850: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d860: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d870: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d880: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
d890: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
d8a0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
d8b0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
d8c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d8d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d8e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d8f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d900: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d910: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d920: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d930: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d940: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d950: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d960: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d970: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
d980: 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
d990: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
d9a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d9b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d9c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d9d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d9e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d9f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
da00: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
da10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
da20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
da30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
da40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
da50: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
da60: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
da70: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
da80: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
da90: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
daa0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dac0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
dad0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
dae0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
daf0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
db00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
db10: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
db20: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
db30: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
db40: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
db50: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
db60: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
db70: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
db80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
db90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
dba0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dbb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
dbc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
dbd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
dbe0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
dbf0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dc00: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
dc10: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
dc20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
dc30: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
dc40: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
dc50: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
dc60: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
dc70: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
dc80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dc90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dca0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
dcb0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
dcc0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
dcd0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
dce0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
dcf0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
dd00: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
dd10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
dd20: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
dd30: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
dd40: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
dd50: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
dd60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
dd70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
dd80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dd90: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
dda0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ddb0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ddc0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
ddd0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dde0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ddf0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
de00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
de10: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
de20: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
de30: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
de40: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
de50: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
de60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
de70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
de80: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
de90: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
dea0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
deb0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
dec0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ded0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
dee0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
def0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
df00: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
df10: 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
df20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
df30: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
df40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
df50: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
df60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
df70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
df80: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
df90: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
dfa0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
dfb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
dfc0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dfd0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dfe0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
dff0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
e000: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
e010: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
e020: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e030: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e040: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e050: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e060: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e070: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e080: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e090: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e0a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e0b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e0c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
e0d0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
e0e0: 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
e0f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e100: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e110: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e120: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e130: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e140: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e150: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e160: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e170: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e180: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e190: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e1a0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e1b0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
e1c0: 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20  pare(IntPtr db, 
e1d0: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
e1e0: 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
e1f0: 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
e200: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
e210: 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50  ....#if USE_PREP
e220: 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41  ARE_V2..#if !PLA
e230: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e240: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e250: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e260: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e270: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e280: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e290: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e2a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e2b0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e2c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e2d0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e2e0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e2f0: 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50  _prepare_v2(IntP
e300: 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
e310: 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
e320: 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
e330: 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
e340: 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  emain);..#endif.
e350: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e360: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e370: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e380: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e390: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e3a0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
e3b0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
e3c0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e3d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e3e0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
e3f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e400: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
e410: 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
e420: 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
e430: 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
e440: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
e450: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
e460: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20  [] colName, ref 
e470: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
e480: 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  pe, ref IntPtr p
e490: 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69  trCollSeq, ref i
e4a0: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20  nt notNull, ref 
e4b0: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
e4c0: 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  ref int autoInc)
e4d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e4e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e4f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e500: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e510: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e520: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e530: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e540: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e550: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e560: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e570: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e580: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
e590: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
e5a0: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
e5b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e5c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e5d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e5e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e5f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e600: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e610: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e620: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e630: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e640: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e650: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
e660: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
e670: 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
e680: 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
e690: 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53  .    // SQLITE_S
e6a0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
e6b0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e6c0: 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
e6d0: 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
e6e0: 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
e6f0: 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
e700: 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
e710: 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
e720: 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
e730: 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
e740: 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
e750: 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
e760: 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
e770: 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
e780: 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
e790: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
e7a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e7b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
e7c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e7d0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
e7e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
e7f0: 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
e800: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
e810: 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c 20 72   ref int type, r
e820: 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65 66 20  ef int enc, ref 
e830: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
e840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e850: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
e860: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e870: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
e880: 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
e890: 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
e8a0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
e8b0: 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
e8c0: 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
e8d0: 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
e8e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e8f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
e900: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e910: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e920: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
e930: 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
e940: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
e950: 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66 20 6c  nt cursor, ref l
e960: 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
e970: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e980: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
e990: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e9a0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e9b0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
e9c0: 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
e9d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
e9e0: 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
e9f0: 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
ea00: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
ea10: 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74  umnName, ref int
ea20: 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65 66 20   sortOrder, ref 
ea30: 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66  int onError, ref
ea40: 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
ea50: 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c  n, ref int colll
ea60: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
ea70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ea80: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
ea90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
eaa0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  int sqlite3_tabl
eab0: 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70  e_cursor_interop
eac0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
ead0: 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52  t db, int tableR
eae0: 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e  ootPage);....#en
eaf0: 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
eb00: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
eb10: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
eb20: 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50    // Standard AP
eb30: 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61  I calls global a
eb40: 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20  cross versions. 
eb50: 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77   There are a few
eb60: 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e   instances of in
eb70: 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
eb80: 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e   // scattered in
eb90: 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20   here, but they 
eba0: 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20  are only active 
ebb0: 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  when PLATFORM_CO
ebc0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69  MPACTFRAMEWORK i
ebd0: 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  s declared...   
ebe0: 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
ebf0: 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c  d sqlite api cal
ec00: 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  ls....#if !PLATF
ec10: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ec20: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
ec30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ec40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ec50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ec60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ec70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ec80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ec90: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
eca0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ecb0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
ecc0: 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
ecd0: 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
ece0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ecf0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
ed00: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ed10: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
ed20: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
ed30: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
ed40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
ed50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ed60: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
ed70: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ed80: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
ed90: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
eda0: 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  umber();....#if 
edb0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
edc0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
edd0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ede0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
edf0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ee00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ee10: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
ee20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ee30: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ee40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ee50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ee60: 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72  Ptr sqlite3_sour
ee70: 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  ceid();....#if !
ee80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ee90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
eea0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
eeb0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
eec0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
eed0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
eee0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
eef0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ef00: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ef10: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ef20: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
ef30: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
ef40: 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74  ption_used(IntPt
ef50: 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a  r zOptName);....
ef60: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ef70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ef80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ef90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
efa0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
efb0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
efc0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
efd0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
efe0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
eff0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f000: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f010: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
f020: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
f030: 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66  t(int N);....#if
f040: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f050: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f060: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f070: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f080: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f090: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f0a0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f0b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f0c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f0d0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f0e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
f0f0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
f100: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61  lite3_enable_sha
f110: 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20 20 20  red_cache(..    
f120: 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b      int enable);
f130: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f140: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f150: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
f160: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
f170: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f180: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
f190: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
f1a0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
f1b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f1c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
f1d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f1e0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
f1f0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
f200: 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
f210: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
f220: 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62  Ptr db, int enab
f230: 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  le);....#if !PLA
f240: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f250: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f260: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f270: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f280: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f290: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f2a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f2b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f2c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f2d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f2e0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
f2f0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
f300: 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
f310: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
f320: 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65   db, byte[] file
f330: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f  Name, byte[] pro
f340: 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  cName, ref IntPt
f350: 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69  r pError);....#i
f360: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f370: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f380: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f390: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f3a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f3b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f3c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
f3d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f3e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
f3f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
f400: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
f410: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
f420: 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f  qlite3_overload_
f430: 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20  function(IntPtr 
f440: 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65  db, IntPtr zName
f450: 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d  , int nArgs);...
f460: 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69  .#if WINDOWS..#i
f470: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f480: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f490: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f4a0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f4b0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f4c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f4d0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
f4e0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
f4f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f500: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f510: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
f520: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
f530: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
f540: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
f550: 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33  he "sqlite3_win3
f560: 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22  2_set_directory"
f570: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
f580: 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
f590: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
f5a0: 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
f5b0: 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f   Windows...    /
f5c0: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
f5d0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
f5e0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
f5f0: 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
f600: 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74  directory(uint t
f610: 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  ype, string valu
f620: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55  e);....#if !DEBU
f630: 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c  G // NOTE: Shoul
f640: 64 20 62 65 20 22 57 49 4e 33 32 48 45 41 50 20  d be "WIN32HEAP 
f650: 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23  && !MEMDEBUG"..#
f660: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f670: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f680: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f690: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f6a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f6b0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f6c0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
f6d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f6e0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
f6f0: 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
f700: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
f710: 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
f720: 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  et_heap" SQLite 
f730: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
f740: 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
f750: 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
f760: 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
f770: 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
f780: 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
f790: 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
f7a0: 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
f7b0: 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
f7c0: 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
f7d0: 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
f7e0: 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
f7f0: 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
f800: 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
f810: 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
f820: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
f830: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
f840: 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
f850: 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
f860: 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
f870: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f880: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
f890: 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
f8a0: 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d  reset_heap();...
f8b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f8c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f8d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f8e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f8f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f900: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f910: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
f920: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f930: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
f940: 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
f950: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
f960: 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63  "sqlite3_win32_c
f970: 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c  ompact_heap" SQL
f980: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
f990: 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
f9a0: 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
f9b0: 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
f9c0: 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69  dows when the Wi
f9d0: 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63  n32 native alloc
f9e0: 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20  ator is in..    
f9f0: 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e  //       use (i.
fa00: 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69  e. by default, i
fa10: 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c  n "Release" buil
fa20: 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
fa30: 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  a.SQLite..    //
fa40: 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42         only).  B
fa50: 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44  y default, in "D
fa60: 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20  ebug" builds of 
fa70: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
fa80: 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  te, the..    // 
fa90: 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61        MEMDEBUG a
faa0: 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64  llocator is used
fab0: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
fac0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fad0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fae0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
faf0: 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70  n32_compact_heap
fb00: 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73  (ref uint larges
fb10: 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  t);..#endif..#en
fb20: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
fb30: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
fb40: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
fb50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fb60: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
fb70: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
fb80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fb90: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
fba0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fbb0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
fbc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fbd0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
fbe0: 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e  qlite3_malloc(in
fbf0: 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t n);....#if !PL
fc00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
fc10: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
fc20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fc30: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
fc40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
fc50: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
fc60: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
fc70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fc80: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
fc90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fca0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
fcb0: 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
fcc0: 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e  (IntPtr p, int n
fcd0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
fce0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fcf0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
fd00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
fd10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fd20: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fd30: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fd40: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
fd50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fd60: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fd70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fd80: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
fd90: 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
fda0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
fdb0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
fdc0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
fdd0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fde0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
fdf0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
fe00: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fe10: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
fe20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fe30: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
fe40: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fe50: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
fe60: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
fe70: 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
fe80: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
fe90: 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
fea0: 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
feb0: 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
fec0: 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
fed0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fee0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
fef0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ff00: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ff10: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ff20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ff30: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
ff40: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
ff50: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ff60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ff70: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
ff80: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
ff90: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ffa0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ffb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
ffc0: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
ffd0: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
ffe0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
fff0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10000 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10010 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10020 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10030 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10040 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10050 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10060 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10070 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10080 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10090 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
100a0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
100b0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
100c0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
100d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
100e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
100f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10100 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10110 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10120 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10130 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
10140 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10150 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
10160 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
10170 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
10180 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
10190 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
101a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
101b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
101c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
101d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
101e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
101f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10200 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10210 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10220 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10230 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
10240 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
10250 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
10260 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10270 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10290 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
102a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
102b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
102c0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
102d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
102e0 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
102f0 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
10300 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
10310 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10320 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10330 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10340 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10350 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10360 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10370 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10380 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
10390 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
103a0 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
103b0 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
103c0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
103d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
103e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
103f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10400 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10410 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10420 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10430 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10440 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10450 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10460 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10470 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10480 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
10490 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
104a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
104b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
104c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
104d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
104e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
104f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10500 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10510 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10520 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10530 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10540 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10550 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10560 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
10570 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
10580 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
10590 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
105a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
105b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
105c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
105d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
105e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
105f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10600 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10610 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10620 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10630 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10640 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10650 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
10660 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
10670 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10680 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10690 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
106a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
106b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
106c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
106d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
106e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
106f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10700 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10710 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10720 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10730 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
10740 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
10750 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
10760 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
10770 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
10780 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
10790 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
107a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
107b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
107c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
107d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
107e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
107f0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
10800 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10810 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10820 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
10830 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
10840 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
10850 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
10860 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
10870 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10880 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10890 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
108a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
108b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
108c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
108d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
108e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
108f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10900 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10910 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10920 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10930 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
10940 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10950 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
10960 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
10970 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
10980 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
10990 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
109a0 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
109b0 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
109c0 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
109d0 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
109e0 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
109f0 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
10a00 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
10a10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10a20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10a40 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
10a50 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
10a60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10a70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10a80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10a90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10aa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10ab0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
10ac0 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
10ad0 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
10ae0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10af0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10b00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10b10 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
10b20 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10b30 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
10b40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10b50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10b60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10b70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10b80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10b90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10ba0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
10bb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10bc0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10bd0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10be0 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
10bf0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10c00 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
10c10 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
10c20 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
10c30 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
10c40 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
10c50 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
10c60 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
10c70 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
10c80 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
10c90 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
10ca0 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
10cb0 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
10cc0 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
10cd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10ce0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10cf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10d00 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
10d10 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
10d20 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
10d30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10d40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10d50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
10d60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10d70 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10d80 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
10d90 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
10da0 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
10db0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
10dc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10dd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10de0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10df0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10e00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10e10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10e20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10e30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10e40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10e50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10e60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10e70 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10e80 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
10e90 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
10ea0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10eb0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10ec0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10ed0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10ee0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10ef0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10f00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10f10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10f20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10f30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10f40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10f50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10f60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10f70 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
10f80 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
10f90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
10fa0 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
10fb0 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
10fc0 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
10fd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10fe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10ff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11000 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11010 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11020 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11030 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11050 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11060 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11070 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
11080 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
11090 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
110a0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
110b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
110c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
110d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
110e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
110f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11100 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11110 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11120 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11130 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11140 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11150 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11160 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
11170 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
11180 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
11190 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
111a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
111b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
111c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
111d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
111e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
111f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11200 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11210 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11220 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11230 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11240 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11250 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
11260 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
11270 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
11280 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11290 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
112a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
112b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
112c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
112d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
112e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
112f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11300 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11310 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11320 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11330 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11340 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
11350 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
11360 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11370 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11380 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11390 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
113a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
113b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
113c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
113d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
113e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
113f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11400 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
11410 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
11420 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
11430 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
11440 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
11450 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11460 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11470 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11480 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11490 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
114a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
114b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
114c0 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
114d0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
114e0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
114f0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
11500 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
11510 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11520 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11530 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11540 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11550 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11560 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11570 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11580 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11590 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
115a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
115b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
115c0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
115d0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
115e0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
115f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11600 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11610 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11620 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11630 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11650 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
11660 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11670 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
11680 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
11690 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
116a0 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
116b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
116c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
116d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
116e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
116f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11700 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11710 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11720 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11730 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11740 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11750 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11760 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
11770 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
11780 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
11790 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
117a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
117b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
117c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
117d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
117e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
117f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11800 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11820 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11830 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11840 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
11850 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
11860 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
11870 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
11880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
118a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
118b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
118c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
118d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
118e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
118f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11900 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11910 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11930 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
11940 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
11950 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
11960 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
11970 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11980 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11990 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
119a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
119b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
119c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
119d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
119e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
119f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11a00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11a10 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
11a20 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
11a30 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
11a40 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
11a50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11a60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11a70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11a80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11a90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11aa0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11ab0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11ac0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11ad0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11ae0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11af0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11b00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
11b10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
11b20 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
11b30 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
11b40 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
11b50 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
11b60 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
11b70 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
11b80 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11b90 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11ba0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11bb0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11bc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11bd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11be0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11bf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11c00 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11c10 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11c20 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11c30 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
11c40 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
11c50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
11c60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11c70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11c80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11c90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11cb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11cc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11cd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11ce0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11cf0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11d00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11d10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11d20 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
11d30 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
11d40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11d50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11d60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11d70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11d80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11d90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11da0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11db0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11dc0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11dd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11de0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
11df0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
11e00 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
11e10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11e20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11e30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11e40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11e50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11e60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11e70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11e80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11e90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11ea0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11eb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11ec0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
11ed0 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
11ee0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
11ef0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11f00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11f10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11f20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11f30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11f40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11f50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11f60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
11f70 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
11f80 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
11f90 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
11fa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11fb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11fc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11fd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11fe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11ff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12000 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12010 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12020 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12030 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12040 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12050 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
12060 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
12070 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12080 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12090 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
120a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
120b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
120c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
120d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
120e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
120f0 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
12100 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
12110 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
12120 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
12130 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12140 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12160 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12170 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12180 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12190 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
121a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
121b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
121c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
121d0 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
121e0 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
121f0 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
12200 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
12210 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12220 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12230 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12240 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12250 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12260 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12270 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12290 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
122a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
122b0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
122c0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
122d0 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
122e0 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
122f0 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
12300 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
12310 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12320 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12330 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12340 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12350 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12360 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12370 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
12380 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12390 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
123a0 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
123b0 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
123c0 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
123d0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
123e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
123f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12400 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12410 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12420 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12430 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12440 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12450 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12460 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12470 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12480 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
12490 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
124a0 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
124b0 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
124c0 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
124d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
124e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
124f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12500 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12510 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12520 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12530 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12540 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12550 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12560 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12570 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12580 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
12590 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
125a0 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
125b0 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
125c0 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
125d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
125e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
125f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12600 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12610 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12620 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12630 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12640 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12650 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12660 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12670 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12680 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
12690 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
126a0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
126b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
126c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
126d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
126e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
126f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12700 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12710 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12720 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12730 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12740 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12750 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12760 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
12770 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
12780 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
12790 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
127a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
127b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
127c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
127d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
127e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
127f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12800 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12820 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12830 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12840 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
12850 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
12860 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
12870 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
12880 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
12890 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
128a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
128b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
128c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
128d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
128e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
128f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12900 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12910 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12920 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12930 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
12940 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
12950 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
12960 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
12970 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12990 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
129a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
129b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
129c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
129d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
129e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
129f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12a00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12a10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12a20 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
12a30 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
12a40 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
12a50 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
12a60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12a70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12a90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12aa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12ab0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12ac0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
12ad0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12ae0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
12af0 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
12b00 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
12b10 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
12b20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12b30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12b40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12b50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12b60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12b70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12b80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12b90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12ba0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12bb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12bc0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12bd0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
12be0 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
12bf0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
12c00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12c10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12c20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12c30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12c40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12c50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12c60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12c70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12c80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12c90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12ca0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12cb0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
12cc0 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
12cd0 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
12ce0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
12cf0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
12d00 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
12d10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12d20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12d30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12d40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12d50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12d60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12d70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12d80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12d90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12da0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12db0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12dc0 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
12dd0 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
12de0 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
12df0 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
12e00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12e10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12e30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12e40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12e50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12e60 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
12e70 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
12e80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12e90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12ea0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
12eb0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
12ec0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12ed0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12ee0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
12ef0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
12f00 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
12f10 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
12f20 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
12f30 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
12f40 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
12f50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12f60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12f70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12f80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12fb0 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
12fc0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
12fd0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12fe0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12ff0 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
13000 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
13010 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13020 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13030 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
13040 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
13050 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
13060 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
13070 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
13080 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13090 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
130a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
130b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
130c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
130d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
130e0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
130f0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
13100 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13110 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13120 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
13130 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
13140 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13150 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13160 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
13170 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
13180 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
13190 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
131a0 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
131b0 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
131c0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
131d0 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
131e0 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
131f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13200 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13210 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13220 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13230 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13240 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13250 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13270 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13280 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13290 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
132a0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
132b0 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
132c0 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
132d0 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
132e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
132f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13300 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13310 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13320 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13330 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13340 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13350 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13360 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13370 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13380 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13390 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
133a0 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
133b0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
133c0 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
133d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
133e0 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
133f0 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
13400 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13410 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13430 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13440 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13450 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13460 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13480 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13490 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
134a0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
134b0 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
134c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
134d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
134e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
134f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13500 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13510 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13520 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13530 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13550 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13560 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13570 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
13580 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
13590 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
135a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
135b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
135c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
135d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
135e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
135f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13600 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13610 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13620 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13630 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13640 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13650 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
13660 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
13670 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
13680 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
13690 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
136a0 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
136b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
136c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
136d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
136e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
136f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13700 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13710 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13720 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13730 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13740 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13750 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13760 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
13770 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
13780 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
13790 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
137a0 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
137b0 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
137c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
137d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
137e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
137f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13800 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13810 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13820 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13830 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13840 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13850 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13860 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13870 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
13880 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
13890 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
138a0 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
138b0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
138c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
138d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
138e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
138f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13900 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13910 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13920 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13930 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13940 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13950 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13960 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13970 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
13980 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
13990 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
139a0 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
139b0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
139c0 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
139d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
139e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
139f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13a00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13a10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13a20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13a30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13a40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13a50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13a60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13a70 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
13a80 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
13a90 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
13aa0 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
13ab0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
13ac0 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
13ad0 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
13ae0 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
13af0 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
13b00 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
13b10 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
13b20 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
13b30 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
13b40 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
13b50 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
13b60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13b70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13b80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13b90 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
13ba0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
13bb0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
13bc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13bd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13be0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13bf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13c00 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
13c10 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
13c20 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
13c30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13c40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13c50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13c60 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
13c70 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
13c80 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
13c90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13ca0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13cb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13cc0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13cd0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
13ce0 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
13cf0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13d00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13d10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13d20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13d30 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13d40 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
13d50 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
13d60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13d70 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13d80 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13d90 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
13da0 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
13db0 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
13dc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13dd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13de0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13df0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
13e00 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
13e10 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
13e20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13e30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13e40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13e50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13e60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
13e70 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
13e80 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
13e90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13ea0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13eb0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13ec0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
13ed0 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
13ee0 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
13ef0 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
13f00 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
13f10 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
13f20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13f30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13f40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13f50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13f60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13f70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13f80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13f90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13fa0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13fb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13fc0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13fd0 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
13fe0 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
13ff0 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
14000 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
14010 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
14020 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14030 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14040 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14050 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14060 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14070 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14080 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14090 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
140a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
140b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
140c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
140d0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
140e0 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
140f0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
14100 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14110 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14120 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14130 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14140 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14150 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14160 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14170 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14180 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14190 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
141a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
141b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
141c0 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
141d0 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
141e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
141f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14200 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14210 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14220 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14230 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14240 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14250 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14260 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14270 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14280 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14290 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
142a0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
142b0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
142c0 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
142d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
142e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
142f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14300 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14310 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14320 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14330 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14340 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14350 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14360 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14370 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14380 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
14390 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72  next_stmt(IntPtr
143a0 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74   db, IntPtr stmt
143b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
143c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
143d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
143e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
143f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14400 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14410 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14420 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14430 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14440 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14450 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14460 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14470 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
14480 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62  xec(IntPtr db, b
14490 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e  yte[] strSql, In
144a0 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c  tPtr pvCallback,
144b0 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c   IntPtr pvParam,
144c0 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d   ref IntPtr errM
144d0 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
144e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
144f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14500 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14510 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14520 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14530 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14540 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14560 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14570 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14580 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
14590 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
145a0 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b  ory(int nBytes);
145b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
145c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
145d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
145e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
145f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14600 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14610 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14620 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14630 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14640 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14650 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14660 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
14670 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
14680 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
14690 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
146a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
146b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
146c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
146d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
146e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
146f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14700 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14710 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14720 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14730 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14740 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14750 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
14760 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
14770 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
14780 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
14790 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
147a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
147b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
147c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
147d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
147e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
147f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14800 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14810 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14820 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14830 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14840 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14850 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
14860 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
14870 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14880 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
148a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
148b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
148c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
148d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
148e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
148f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14900 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14910 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14920 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14930 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
14940 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
14950 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14960 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14970 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14980 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14990 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
149a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
149b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
149c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
149d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
149e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
149f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14a00 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14a10 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
14a20 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
14a30 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
14a40 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
14a50 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
14a60 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
14a70 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
14a80 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
14a90 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
14aa0 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
14ab0 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
14ac0 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
14ad0 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
14ae0 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20  e string, and.. 
14af0 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20     // depend on 
14b00 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f  the caller to fo
14b10 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e  rmat the string.
14b20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14b30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14b40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14b50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14b60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14b70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14b80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14b90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14ba0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14bb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14bc0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14bd0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14be0 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  log(SQLiteErrorC
14bf0 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79  ode iErrCode, by
14c00 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a  te[] zFormat);..
14c10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14c20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14c30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14c40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14c50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14c60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14c70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14c80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14c90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14ca0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14cb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14cc0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14cd0 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  de sqlite3_file_
14ce0 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64  control(IntPtr d
14cf0 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d  b, byte[] zDbNam
14d00 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
14d10 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20  r pArg);....#if 
14d20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14d30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14d40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14d50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14d60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14d70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14d80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14da0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14db0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14dc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
14dd0 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  Ptr sqlite3_back
14de0 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64  up_init(IntPtr d
14df0 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44  estDb, byte[] zD
14e00 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20  estName, IntPtr 
14e10 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d  sourceDb, byte[]
14e20 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a   zSourceName);..
14e30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14e40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14e50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14e60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14e70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14e80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14e90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14ea0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14eb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14ec0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14ed0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14ee0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14ef0 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
14f00 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61  p_step(IntPtr ba
14f10 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29  ckup, int nPage)
14f20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14f30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14f40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14f50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14f60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14f70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14f80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14f90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14fa0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14fb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14fc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14fd0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14fe0 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69  3_backup_remaini
14ff0 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ng(IntPtr backup
15000 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15010 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15020 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15050 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15060 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15070 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
15080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15090 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
150a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
150b0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
150c0 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f  e3_backup_pageco
150d0 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75  unt(IntPtr backu
150e0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
150f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15100 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15110 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15120 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15130 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15140 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15150 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15160 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15170 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15180 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15190 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
151a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
151b0 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74  declare_vtab(Int
151c0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
151d0 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  SQL);....#if !PL
151e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
151f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15200 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15210 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15220 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15230 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15240 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15250 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15260 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15270 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15280 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15290 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
152a0 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20  (IntPtr format, 
152b0 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20  __arglist);..   
152c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
152d0 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49     // SQLite API
152e0 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20   calls that are 
152f0 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c  provided by "wel
15300 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69  l-known" extensi
15310 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20  ons that may be 
15320 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20  statically..    
15330 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74  // linked with t
15340 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
15350 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75  ative library cu
15360 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d  rrently in use..
15370 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74  .    #region ext
15380 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70  ension sqlite ap
15390 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54  i calls..#if INT
153a0 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
153b0 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  LE..#if !PLATFOR
153c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
153d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
153e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
153f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15400 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15410 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15420 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15430 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15440 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15450 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15460 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
15470 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
15480 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  sable_module(Int
15490 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
154a0 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33  ame, ref sqlite3
154b0 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  _module module, 
154c0 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
154d0 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ta, xDestroyModu
154e0 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le xDestroy);...
154f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15500 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15510 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15520 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15530 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15540 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15550 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15560 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15570 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15580 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15590 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
155a0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64  n void sqlite3_d
155b0 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e  ispose_module(In
155c0 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a  tPtr pModule);..
155d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
155e0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
15640 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20   #region sqlite 
15650 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c  interop api call
15660 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  s (.NET Compact 
15670 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d  Framework only).
15680 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
15690 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
156a0 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
156b0 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RD..    [DllImpo
156c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
156d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
156e0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
156f0 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
15700 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72  sert_rowid_inter
15710 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65  op(IntPtr db, re
15720 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a  f long rowId);..
15730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15740 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
15750 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15760 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
15770 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
15780 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c  ed_interop(ref l
15790 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
157a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
157b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
157c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
157d0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
157e0 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
157f0 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
15800 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
15810 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
15820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15830 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15840 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15850 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
15860 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
15870 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
15880 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
15890 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
158a0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
158b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
158c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
158d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
158e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
158f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
15900 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
15910 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
15920 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
15930 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
15940 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15950 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
15960 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
15970 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
15980 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74  erop")]..    int
15990 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
159a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
159b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
159c0 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  _uint64_interop(
159d0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
159e0 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e   index, ref ulon
159f0 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
15a00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15a10 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
15a20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15a30 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
15a40 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
15a50 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
15a60 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
15a70 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
15a80 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15a90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15aa0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15ab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
15ac0 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
15ad0 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  n_int64_interop(
15ae0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15af0 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
15b00 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
15b10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15b20 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15b30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15b40 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
15b50 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
15b60 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
15b70 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
15b80 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15ba0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15bb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
15bc0 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
15bd0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
15be0 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49 6e 74  ntPtr p, ref Int
15bf0 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
15c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15c10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15c20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15c30 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
15c40 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
15c50 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15c60 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75  context, ref dou
15c70 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
15c80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15c90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15ca0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15cb0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
15cc0 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
15cd0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15ce0 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
15cf0 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
15d00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15d10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15d20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15d30 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15d40 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
15d50 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
15d60 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
15d70 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
15d80 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70  r name, IntPtr p
15d90 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72  Module, int iVer
15da0 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43  sion, xCreate xC
15db0 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
15dc0 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
15dd0 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  t, xBestIndex xB
15de0 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f  estIndex, xDisco
15df0 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
15e00 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  t,..        xDes
15e10 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78  troy xDestroy, x
15e20 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f  Open xOpen, xClo
15e30 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74  se xClose, xFilt
15e40 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20  er xFilter,..   
15e50 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74       xNext xNext
15e60 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f  , xEof xEof, xCo
15e70 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52  lumn xColumn, xR
15e80 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70  owId xRowId, xUp
15e90 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20  date xUpdate,.. 
15ea0 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42         xBegin xB
15eb0 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e  egin, xSync xSyn
15ec0 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  c, xCommit xComm
15ed0 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  it, xRollback xR
15ee0 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
15ef0 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20    xFindFunction 
15f00 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78  xFindFunction, x
15f10 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20  Rename xRename, 
15f20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
15f30 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  point,..        
15f40 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
15f50 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  e, xRollbackTo x
15f60 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50  RollbackTo, IntP
15f70 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d  tr pClientData,.
15f80 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
15f90 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
15fa0 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
15fb0 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
15fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15fd0 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
15fe0 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
15ff0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
16000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16050 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
16060 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
16070 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
16080 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
16090 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
160a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
160b0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
160c0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
160d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
160e0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
160f0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
16100 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
16110 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
16120 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
16130 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
16140 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
16150 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
16160 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
16170 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
16180 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
16190 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
161a0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16200 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16210 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16220 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
16230 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16240 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16250 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
16260 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
16270 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16280 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
16290 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
162a0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
162b0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
162c0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
162d0 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
162e0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
162f0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
16300 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
16310 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
16320 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16370 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16380 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16390 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
163a0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
163b0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
163c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
163d0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
163e0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
163f0 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64  rorCode xBestInd
16400 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ex(..        Int
16410 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
16420 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
16430 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
16440 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16490 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
164a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
164b0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
164c0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
164d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
164e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
164f0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
16500 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
16510 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
16520 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
16530 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
16540 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
16550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16590 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
165a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
165b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
165c0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
165d0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
165e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
165f0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
16600 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
16610 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
16620 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  roy(..        In
16630 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
16640 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
166a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
166b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
166c0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
166d0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
166e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
166f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
16700 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
16710 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
16720 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  pen(..        In
16730 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
16740 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
16750 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
16760 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
16770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
167c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
167d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
167e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
167f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
16800 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16810 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
16820 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
16830 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
16840 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
16850 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
16860 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
16870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
168c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
168d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
168e0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
168f0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
16900 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16910 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
16920 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
16930 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
16940 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
16950 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
16960 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78  .        int idx
16970 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Num,..        In
16980 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20  tPtr idxStr,..  
16990 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
169a0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
169b0 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  argv..    );....
169c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
169d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16a10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16a20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16a30 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16a40 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16a50 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16a60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16a70 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16a80 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
16a90 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a  rorCode xNext(..
16aa0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16ab0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
16ac0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b10 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
16b20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16b30 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
16b40 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
16b50 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
16b60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16b70 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
16b80 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45   delegate int xE
16b90 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  of(..        Int
16ba0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
16bb0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
16c10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16c20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
16c30 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
16c40 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
16c50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16c60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
16c70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
16c80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16c90 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
16ca0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
16cb0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16cc0 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
16cd0 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
16ce0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16d40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16d50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16d60 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
16d70 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16d80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16d90 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
16da0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
16db0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16dc0 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
16dd0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
16de0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
16df0 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
16e00 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
16e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e50 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
16e60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16e70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
16e80 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
16e90 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16ea0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16eb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
16ec0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
16ed0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
16ee0 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  date(..        I
16ef0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
16f00 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
16f10 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16f20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
16f30 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
16f40 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16fa0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16fb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16fc0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
16fd0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16fe0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16ff0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
17000 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
17010 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17020 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
17030 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
17040 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
170a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
170b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
170c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
170d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
170e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
170f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
17100 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
17110 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
17120 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
17130 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
17140 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17190 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
171a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
171b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
171c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
171d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
171e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
171f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
17200 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
17210 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
17220 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
17230 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
17240 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
172a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
172b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
172c0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
172d0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
172e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
172f0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
17300 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
17310 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
17320 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
17330 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17340 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
17350 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
173a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
173b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
173c0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
173d0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
173e0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
173f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17400 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
17410 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e  elegate int xFin
17420 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
17430 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
17440 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e  ,..        int n
17450 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Arg,..        In
17460 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
17470 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
17480 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
17490 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
174a0 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d  ntPtr pUserData.
174b0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
17510 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17520 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17530 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
17540 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
17550 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17560 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
17570 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
17580 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
17590 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
175a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
175b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
175c0 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d  tr zNew..    );.
175d0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
175e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17620 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
17630 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17640 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
17650 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
17660 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17670 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17680 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17690 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
176a0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
176b0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
176c0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
176d0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
176e0 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
176f0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17750 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17760 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
17770 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
17780 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
17790 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
177a0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
177b0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
177c0 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
177d0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
177e0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
177f0 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
17800 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
17810 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17860 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17870 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17880 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
17890 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
178a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
178b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
178c0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
178d0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
178e0 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
178f0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
17900 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
17910 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
17920 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
17930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
17980 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17990 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
179a0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
179b0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
179c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
179d0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
179e0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
179f0 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
17a00 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  yModule(IntPtr p
17a10 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65  ClientData);..#e
17a20 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
17a30 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
17a90 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74  region Native St
17aa0 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e  ructures..#if IN
17ab0 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
17ac0 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  BLE..    [Struct
17ad0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
17ae0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
17af0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
17b00 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
17b10 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
17b20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56     public int iV
17b30 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
17b40 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20   public xCreate 
17b50 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20  xCreate;..      
17b60 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63    public xConnec
17b70 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
17b80 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73       public xBes
17b90 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
17ba0 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  x;..        publ
17bb0 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  ic xDisconnect x
17bc0 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  Disconnect;..   
17bd0 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73       public xDes
17be0 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a  troy xDestroy;..
17bf0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
17c00 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
17c10 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f       public xClo
17c20 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
17c30 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74      public xFilt
17c40 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
17c50 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78       public xNex
17c60 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20  t xNext;..      
17c70 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45    public xEof xE
17c80 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  of;..        pub
17c90 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  lic xColumn xCol
17ca0 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
17cb0 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77  blic xRowId xRow
17cc0 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  Id;..        pub
17cd0 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64  lic xUpdate xUpd
17ce0 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
17cf0 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
17d00 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  in;..        pub
17d10 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
17d20 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17d30 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
17d40 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
17d50 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  c xRollback xRol
17d60 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  lback;..        
17d70 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
17d80 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
17d90 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
17da0 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  lic xRename xRen
17db0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ame;..        /*
17dc0 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f   The methods abo
17dd0 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f  ve are in versio
17de0 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74  n 1 of the sqlit
17df0 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
17e00 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54      * object.  T
17e10 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66  hose below are f
17e20 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  or version 2 and
17e30 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20   greater. */..  
17e40 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61        public xSa
17e50 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
17e60 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
17e70 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65  lic xRelease xRe
17e80 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  lease;..        
17e90 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
17ea0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
17eb0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
17ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17f10 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
17f20 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
17f30 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
17f40 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
17f50 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
17f60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17f70 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d  IntPtr pModule;.
17f80 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17f90 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20  int nRef; /* NO 
17fa0 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a  LONGER USED */..
17fb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
17fc0 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a  ntPtr zErrMsg;..
17fd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
17fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18030 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
18040 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
18050 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
18060 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
18070 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
18080 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
18090 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
180a0 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
180b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
180c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18100 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
18110 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
18120 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
18130 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
18140 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
18150 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
18160 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18170 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
18180 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
18190 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
181a0 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
181b0 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
181c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
181d0 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
181e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
181f0 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
18200 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
18210 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
18230 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
18240 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
18250 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
18260 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
18270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18280 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
18290 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
182a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
182b0 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
182c0 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
182d0 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
182e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
182f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
18350 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
18360 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18370 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
18380 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
18390 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
183a0 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20   usable;..      
183b0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65    public int iTe
183c0 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
183d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
183e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18420 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
18430 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
18440 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
18450 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18460 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
18470 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
18480 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
18490 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
184a0 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
184b0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
184c0 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
184d0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
184e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
184f0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
18500 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
18510 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
18520 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18530 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18540 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
18550 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
18560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18570 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
18580 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
18590 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
185a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
185b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
18600 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
18610 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65   /* Column numbe
18620 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
18630 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
18640 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
18650 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
18660 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
18670 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186c0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
186d0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
186e0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
186f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
18700 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
18710 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
18720 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
18730 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
18740 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
18750 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
18760 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
18770 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
18780 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
18790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
187a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
187b0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
187c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
187d0 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
187e0 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
187f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18800 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
18810 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
18820 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
18830 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18840 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
18850 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
18860 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18870 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
18880 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
188d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
188e0 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
188f0 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
18900 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
18910 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
18920 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18930 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
18940 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
18950 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
18960 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
18970 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
189d0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
189e0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
189f0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
18a00 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
18a10 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
18a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
18a30 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
18a40 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f    public int nCo
18a50 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d  nstraint; /* Num
18a60 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
18a70 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  n aConstraint */
18a80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18a90 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
18aa0 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
18ab0 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42  blic int nOrderB
18ac0 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y;..        publ
18ad0 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72  ic IntPtr aOrder
18ae0 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  By;..        /* 
18af0 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20  Outputs */..    
18b00 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
18b10 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r aConstraintUsa
18b20 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ge;..        pub
18b30 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20  lic int idxNum; 
18b40 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
18b50 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e  ber used to iden
18b60 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a  tify the index *
18b70 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
18b80 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b  c string idxStr;
18b90 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e          /* Strin
18ba0 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61  g, possibly obta
18bb0 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
18bc0 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20  3_malloc */..   
18bd0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
18be0 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
18bf0 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72  ; /* Free idxStr
18c00 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
18c10 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f  ree() if true */
18c20 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18c30 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
18c40 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69  umed;  /* True i
18c50 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
18c60 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a  ady ordered */..
18c70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64          public d
18c80 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
18c90 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65  ost; /* Estimate
18ca0 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
18cb0 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20  this index */.. 
18cc0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
18cd0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
18ce0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
18d40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18d50 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
18d60 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
18d70 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
18d80 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
18d90 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
18da0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
18db0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
18dc0 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
18dd0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
18de0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
18df0 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
18e00 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
18e10 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
18e20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
18e30 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
18e40 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
18e50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
18e60 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
18e70 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
18e80 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
18e90 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
18ea0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
18eb0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
18ec0 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
18ed0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18ee0 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
18ef0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
18f00 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
18f10 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
18f20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
18f30 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
18f40 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
18f50 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
18f60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
18f70 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
18f80 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
18f90 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
18fa0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
18fb0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
18fc0 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
18fd0 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
18fe0 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
18ff0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
19000 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
19010 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
19020 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
19030 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
19040 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
19050 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
19060 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
19070 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
19080 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
19090 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
190a0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
190b0 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
190c0 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
190d0 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
190e0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
190f0 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
19100 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
19110 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
19120 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
19130 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
19140 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
19150 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
19160 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
19170 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
19180 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
19190 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
191a0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
191b0 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
191c0 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
191d0 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d    }....#endif...
191e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
19240 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
19250 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
19260 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
19270 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
19280 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
19290 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
192a0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
192b0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
192c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
192d0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
192e0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
192f0 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
19300 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
19310 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
19320 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19330 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19340 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
19350 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
19360 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
19370 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
19380 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
19390 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
193a0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
193b0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
193c0 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
193d0 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
193e0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
193f0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
19400 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
19410 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
19420 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19470 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
19480 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19490 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
194a0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
194b0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
194c0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
194d0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
194e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19530 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
19540 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
19550 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
195a0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
195b0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
195c0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
195d0 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
195e0 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
195f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19600 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
19610 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19620 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
19630 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19640 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
19650 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
19660 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
19670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19680 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19690 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
196a0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
196b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
196c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
196d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
196e0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
196f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19700 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19750 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
19760 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
19770 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
19780 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
19790 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
197a0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
197b0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
197c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
197d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
197e0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
197f0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
19800 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19820 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
19830 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
19840 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
19850 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
19860 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19870 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
198d0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
198e0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
198f0 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
19900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
19910 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
19920 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
19930 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
19940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19950 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
19960 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
19970 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
19980 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69  t(ref UnsafeNati
19990 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
199a0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
199b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
199c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
199d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
19a20 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
19a30 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
19a40 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
19a50 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
19a60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19a70 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
19a80 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
19a90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
19aa0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19ab0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
19ac0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
19ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19ae0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
19af0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
19b00 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
19b10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19b20 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
19b30 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
19b40 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
19b50 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b70 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
19b80 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
19b90 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
19ba0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
19bb0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
19bc0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
19bd0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
19be0 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
19bf0 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
19c00 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
19c10 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
19c20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
19c30 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
19c40 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
19c50 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
19c60 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
19c70 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
19c80 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
19c90 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
19ca0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
19cb0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
19cc0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
19cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
19ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19cf0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
19d00 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69  eLine(UnsafeNati
19d10 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  veMethods.String
19d20 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
19d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d40 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
19d50 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d70 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
19d80 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f  ection: {0}", lo
19d90 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
19da0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
19db0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
19dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
19dd0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
19de0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19df0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
19e00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
19e10 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
19e20 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
19e30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e50 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
19e60 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
19e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19e90 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
19ea0 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
19eb0 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e  ection(this, han
19ec0 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
19ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
19ee0 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
19ef0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
19f00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19f20 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
19f30 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
19f40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
19f50 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
19f60 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
19f70 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
19f80 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
19f90 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
19fa0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
19fb0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
19fc0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
19fd0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
19fe0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
19ff0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1a000 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1a010 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1a020 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1a030 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
1a040 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1a050 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1a060 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1a070 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
1a080 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
1a090 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
1a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a0b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1a0c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a0d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1a0e0 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66  .WriteLine(Unsaf
1a0f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53  eNativeMethods.S
1a100 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
1a110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a120 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
1a130 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
1a140 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a150 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
1a160 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
1a170 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
1a180 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1a190 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
1a1a0 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
1a1b0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
1a1c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a1d0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
1a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a1f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a200 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1a210 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a220 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1a230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a240 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a250 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a270 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1a280 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1a290 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2b0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
1a2c0 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
1a2d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a2e0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
1a2f0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1a300 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
1a310 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1a320 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1a330 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1a340 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
1a3a0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1a3b0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
1a3c0 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
1a3d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a3e0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
1a3f0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
1a400 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1a410 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
1a420 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
1a430 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20  ectionCount);.. 
1a440 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1a450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1a4b0 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61  ublic bool OwnHa
1a4c0 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
1a4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1a4e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a4f0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a500 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a520 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1a530 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1a540 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a560 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65  return ownHandle
1a570 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1a580 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1a590 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1a5a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1a5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1a600 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
1a610 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
1a620 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a630 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1a640 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1a650 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a660 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1a670 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a680 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1a690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a6b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
1a6c0 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1a6d0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1a6e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a6f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a700 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a750 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
1a760 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
1a770 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
1a780 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
1a790 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1a7a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a7b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1a7c0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1a7d0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1a7e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a800 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
1a810 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
1a820 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a830 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
1a840 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1a850 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1a8b0 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  on SQLiteStateme
1a8c0 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  ntHandle Class..
1a8d0 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
1a8e0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
1a8f0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
1a900 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d  ed SQLite statem
1a910 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ents...    inter
1a920 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
1a930 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1a940 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
1a950 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
1a960 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1a970 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a980 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1a990 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
1a9a0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1a9b0 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
1a9c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1aa20 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
1aa30 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1aa40 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1aaa0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1aab0 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
1aac0 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74   IntPtr(SQLiteSt
1aad0 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74  atementHandle st
1aae0 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  mt)..        {..
1aaf0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ab00 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  stmt != null).. 
1ab10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1ab20 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1ab30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1ab50 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74  k (stmt.syncRoot
1ab60 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1ab70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ab90 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61    return stmt.ha
1aba0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
1abb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1abc0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1abd0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1abe0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
1abf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1ac50 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
1ac60 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1ac70 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
1ac80 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
1ac90 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  Ptr stmt)..     
1aca0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
1acb0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1acc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1acd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1ace0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1acf0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1ad00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1ad10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ad20 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
1ad30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad40 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b  SetHandle(stmt);
1ad50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1ad60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1ad70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1adc0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1add0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1ade0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
1adf0 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
1ae00 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1ae10 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
1ae20 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1ae30 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1ae40 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
1ae50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1ae60 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1ae70 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1ae80 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
1ae90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1aea0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1aef0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
1af00 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
1af10 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
1af20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1af30 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1af40 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1af50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1af60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1af70 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1af80 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
1af90 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
1afa0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
1afb0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
1afc0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
1afd0 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
1afe0 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
1aff0 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
1b000 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1b010 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1b020 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
1b030 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
1b040 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
1b050 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1b060 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1b070 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1b080 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1b090 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b0b0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1b0c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b0d0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1b0e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b0f0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1b100 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1b110 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1b120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b130 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
1b140 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  nt: {0}", localH
1b150 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
1b160 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
1b170 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b180 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
1b190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b1a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b1b0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
1b1c0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1b1d0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1b1e0 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1b1f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b200 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b210 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
1b220 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1b230 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b250 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1b260 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
1b270 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ment(cnn, handle
1b280 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1b290 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1b2a0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
1b2b0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
1b2c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b2d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1b2e0 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
1b2f0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1b300 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
1b310 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
1b320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b330 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
1b340 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61  ativeMethods.sta
1b350 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23  tementCount);..#
1b360 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
1b370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b380 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1b390 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1b3a0 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
1b3b0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1b3c0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1b3d0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1b3e0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
1b3f0 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
1b400 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1b410 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
1b420 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1b430 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
1b440 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1b450 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1b460 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b480 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b490 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1b4a0 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74  teLine(UnsafeNat
1b4b0 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  iveMethods.Strin
1b4c0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1b4f0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b510 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1b520 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
1b530 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1b540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b550 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1b560 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1b570 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b580 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b590 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1b5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b5c0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1b5d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1b5e0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1b5f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1b600 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1b610 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1b630 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1b640 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1b650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1b670 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1b680 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1b690 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1b6a0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1b6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1b6c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1b6d0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1b6e0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1b6f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1b700 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b750 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1b760 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1b770 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1b780 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1b790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b7a0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1b7b0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1b7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b7d0 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1b7e0 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d  veMethods.statem
1b7f0 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  entCount);..    
1b800 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
1b810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1b870 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
1b880 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
1b890 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b8a0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
1b8b0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1b8c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b8d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1b8e0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1b8f0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1b900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1b910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b920 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
1b930 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
1b940 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1b950 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b960 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b970 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1b980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
1b9d0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
1b9e0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
1b9f0 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
1ba00 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1ba10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ba20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1ba30 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1ba40 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1ba50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ba70 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
1ba80 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
1ba90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1baa0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
1bab0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1bac0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb10 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1bb20 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  n SQLiteBackupHa
1bb30 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
1bb40 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
1bb50 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
1bb60 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
1bb70 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a  QLite backup obj
1bb80 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
1bb90 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
1bba0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
1bbb0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
1bbc0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
1bbd0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1bbe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bbf0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
1bc00 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
1bc10 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
1bc20 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
1bc30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1bc90 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
1bca0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
1bcb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1bd10 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
1bd20 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
1bd30 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75  tPtr(SQLiteBacku
1bd40 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d  pHandle backup).
1bd50 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1bd60 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b          if (back
1bd70 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  up != null)..   
1bd80 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1bd90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1bda0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1bdb0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1bdc0 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74  (backup.syncRoot
1bdd0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1bde0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be00 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e    return backup.
1be10 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
1be20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1be30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1be40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1be50 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
1be60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1be70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1beb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1bec0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
1bed0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
1bee0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1bef0 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
1bf00 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  tr backup)..    
1bf10 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
1bf20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bf30 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1bf40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bf50 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1bf60 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1bf70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf90 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
1bfa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bfb0 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75   SetHandle(backu
1bfc0 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  p);..           
1bfd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1bfe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c030 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1c040 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ate SQLiteBackup
1c050 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
1c060 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
1c070 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1c080 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
1c090 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1c0a0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1c0b0 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1c0d0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1c0e0 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
1c0f0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1c100 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1c110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c150 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c160 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
1c170 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
1c180 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
1c190 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c1a0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1c1b0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
1c1c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c1d0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1c1e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
1c1f0 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
1c200 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
1c210 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1c220 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
1c230 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
1c240 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c250 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
1c260 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1c270 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1c280 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1c290 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
1c2a0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
1c2b0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
1c2c0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1c2d0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1c2e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1c2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c300 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c310 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1c320 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61  iteLine(UnsafeNa
1c330 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69  tiveMethods.Stri
1c340 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c360 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1c370 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c390 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
1c3a0 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
1c3b0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
1c3c0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1c3d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1c3e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1c3f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1c400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c410 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1c420 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1c430 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1c440 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1c450 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c470 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
1c480 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1c490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c4b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1c4c0 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
1c4d0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
1c4e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c4f0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1c500 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
1c510 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1c520 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c530 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1c540 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
1c550 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1c560 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
1c570 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
1c580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c590 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1c5a0 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
1c5b0 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
1c5c0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1c5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c5e0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1c5f0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1c600 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1c610 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1c620 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1c630 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
1c640 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
1c650 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1c660 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1c670 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
1c680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1c690 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1c6a0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1c6b0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1c6c0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1c6d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1c6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6f0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1c700 65 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e(UnsafeNativeMe
1c710 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1c720 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1c730 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1c740 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1c750 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c770 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
1c780 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
1c790 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7b0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
1c7c0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1c7d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1c7f0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1c800 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c810 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1c820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1c830 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
1c840 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
1c850 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1c860 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c870 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1c880 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1c890 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1c8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8c0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
1c8d0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
1c8e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1c8f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1c900 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1c910 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1c920 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
1c930 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1c940 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1c950 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c960 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1c9b0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1c9c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1c9d0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
1c9e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1c9f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ca00 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1ca10 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1ca20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
1ca30 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1ca40 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
1ca50 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1ca60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1ca70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cab0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1cac0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
1cad0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
1cae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1caf0 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
1cb00 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1cb10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1cb20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1cb30 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1cb40 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1cb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cb60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cb70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cb80 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
1cb90 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1cba0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1cbb0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1cbc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cbd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1cc20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
1cc30 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
1cc40 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
1cc50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1cc60 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1cc70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cc80 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1cc90 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1cca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccc0 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
1ccd0 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
1cce0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ccf0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
1cd00 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1cd10 6f 6e 0d 0a 7d 0d 0a                             on..}..