System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact c71b8448bc1b1fa9d6b0e324a6320adc3f0f21c0:


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 39 2e 64 6c 6c 22 3b 0d 0a  erop.099.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 45 6e 74 72 79  QLITE_DLL, Entry
14310 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
14320 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43  _db_filename", C
14330 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14340 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14350 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14360 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14370 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14380 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
14390 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
143a0 65 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  e")]..#endif..  
143b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
143c0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
143d0 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
143e0 61 6d 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72  ame_bytes(IntPtr
143f0 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61   db, byte[] dbNa
14400 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
14410 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14420 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14430 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14440 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14450 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14460 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14470 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14480 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14490 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
144a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
144b0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
144c0 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d  sqlite3_next_stm
144d0 74 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  t(IntPtr db, Int
144e0 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
144f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14500 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14510 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14520 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14530 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14540 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14550 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
14560 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14570 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
14580 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14590 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
145a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
145b0 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50  qlite3_exec(IntP
145c0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
145d0 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43  rSql, IntPtr pvC
145e0 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20  allback, IntPtr 
145f0 70 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74  pvParam, ref Int
14600 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a  Ptr errMsg);....
14610 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14620 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14630 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14640 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14650 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14660 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14670 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14680 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14690 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
146a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
146b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
146c0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c   int sqlite3_rel
146d0 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20  ease_memory(int 
146e0 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
146f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14700 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14710 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14720 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14730 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14740 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14750 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14760 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14770 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14780 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14790 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
147a0 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74   sqlite3_get_aut
147b0 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64  ocommit(IntPtr d
147c0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
147d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
147e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
147f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14800 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14810 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14830 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14850 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14860 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14870 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14880 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14890 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f  extended_result_
148a0 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c  codes(IntPtr db,
148b0 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a   int onoff);....
148c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
148d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
148e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
148f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14920 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14930 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14940 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14950 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14960 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14970 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14980 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
14990 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
149a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
149b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
149c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
149d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
149e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
149f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14a00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14a10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14a20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14a30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14a40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14a50 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14a60 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
14a70 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  d_errcode(IntPtr
14a80 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
14a90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14aa0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14ab0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14ac0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14ad0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14ae0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14af0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14b00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14b10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14b20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14b30 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14b40 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28   sqlite3_errstr(
14b50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14b60 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20  rc); /* 3.7.15+ 
14b70 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e  */....    // Sin
14b80 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  ce sqlite3_log()
14b90 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c   takes a variabl
14ba0 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c  e argument list,
14bb0 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72   we have to over
14bc0 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e  load declaration
14bd0 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c  s..    // for al
14be0 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73  l possible calls
14bf0 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61  .  For now, we a
14c00 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67  re only exposing
14c10 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67   a single string
14c20 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65  , and..    // de
14c30 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c  pend on the call
14c40 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65  er to format the
14c50 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50   string...#if !P
14c60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14c70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14c80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14c90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14ca0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14cb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14cc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14cd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14ce0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14cf0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14d00 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
14d10 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69  sqlite3_log(SQLi
14d20 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72  teErrorCode iErr
14d30 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f  Code, byte[] zFo
14d40 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rmat);....#if !P
14d50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14d60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14d70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14d80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14d90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14da0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14db0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14dc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14dd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14de0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14df0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14e00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14e10 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
14e20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
14e30 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f  ] zDbName, int o
14e40 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b  p, IntPtr pArg);
14e50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14e60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14e70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14e80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14e90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14ea0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14eb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14ec0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14ed0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14ee0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14ef0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14f00 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14f10 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28  te3_backup_init(
14f20 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62  IntPtr destDb, b
14f30 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c  yte[] zDestName,
14f40 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62   IntPtr sourceDb
14f50 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65  , byte[] zSource
14f60 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
14f70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14f80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14f90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14fa0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14fb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14fc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14fd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14fe0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14ff0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15000 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15010 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15020 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15030 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49  e3_backup_step(I
15040 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e  ntPtr backup, in
15050 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66  t nPage);....#if
15060 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15070 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15080 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15090 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
150a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
150b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
150c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
150d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
150e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
150f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15100 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
15110 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
15120 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74  _remaining(IntPt
15130 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
15140 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15150 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15160 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15170 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15180 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15190 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
151a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
151b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
151c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
151d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
151e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
151f0 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  nt sqlite3_backu
15200 70 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50  p_pagecount(IntP
15210 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23  tr backup);....#
15220 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15230 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15240 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15250 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15260 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15270 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15280 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
15290 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
152a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
152b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
152c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
152d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
152e0 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
152f0 76 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20  vtab(IntPtr db, 
15300 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d  IntPtr zSQL);...
15310 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15320 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15340 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15390 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
153a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
153b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
153c0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
153d0 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20  _mprintf(IntPtr 
153e0 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73  format, __arglis
153f0 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  t);..    #endreg
15400 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51  ion....    // SQ
15410 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74  Lite API calls t
15420 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64  hat are provided
15430 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22   by "well-known"
15440 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74   extensions that
15450 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c   may be statical
15460 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65  ly..    // linke
15470 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
15480 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69  e core native li
15490 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20  brary currently 
154a0 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65  in use...    #re
154b0 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73  gion extension s
154c0 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
154d0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
154e0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
154f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15500 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15510 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15520 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15530 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15540 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15550 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15560 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15570 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15580 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15590 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
155a0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
155b0 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
155c0 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
155d0 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
155e0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
155f0 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
15600 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
15610 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
15620 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
15630 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15640 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15650 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15660 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15670 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15680 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15690 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
156a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
156b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
156c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
156d0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
156e0 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
156f0 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
15700 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
15710 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15720 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15770 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
15780 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20   sqlite interop 
15790 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20  api calls (.NET 
157a0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
157b0 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41  k only)..#if PLA
157c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
157d0 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54  MEWORK && !SQLIT
157e0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
157f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15800 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15810 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15820 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
15830 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
15840 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
15850 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72  r db, ref long r
15860 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owId);....    [D
15870 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15880 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
15890 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
158a0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
158b0 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72  emory_used_inter
158c0 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  op(ref long byte
158d0 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
158e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
158f0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15900 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
15910 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
15920 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74  ry_highwater_int
15930 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c  erop(int resetFl
15940 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74  ag, ref long byt
15950 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  es);....    [Dll
15960 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15970 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
15980 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15990 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
159a0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
159b0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
159c0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
159d0 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  ex, ref double v
159e0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
159f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15a00 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
15a10 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15a20 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
15a30 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
15a40 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
15a50 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15a60 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
15a70 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
15a80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15a90 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
15aa0 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
15ab0 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d  nt64_interop")].
15ac0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15ad0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15ae0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15af0 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f  te3_bind_uint64_
15b00 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
15b10 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
15b20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ref ulong value)
15b30 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
15b40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15b50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15b60 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15b70 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  d sqlite3_column
15b80 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
15b90 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15ba0 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
15bb0 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
15bc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15bd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15be0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15bf0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
15c00 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f  e3_column_int64_
15c10 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
15c20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
15c30 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
15c40 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15c50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15c60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15c70 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15c80 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
15c90 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
15ca0 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62  tPtr p, ref doub
15cb0 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
15cc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15cd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15ce0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15cf0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
15d00 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
15d10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
15d20 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
15d30 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15d40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15d50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15d60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
15d70 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
15d80 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  t_double_interop
15d90 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
15da0 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
15db0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
15dc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15dd0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15de0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
15df0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
15e00 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  lt_int64_interop
15e10 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
15e20 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
15e30 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15e40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15e50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15e60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15e70 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65  tPtr sqlite3_cre
15e80 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
15e90 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a  odule_interop(..
15ea0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
15eb0 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20  b, IntPtr name, 
15ec0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20  IntPtr pModule, 
15ed0 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43  int iVersion, xC
15ee0 72 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a  reate xCreate,..
15ef0 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74          xConnect
15f00 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74   xConnect, xBest
15f10 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
15f20 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44  , xDisconnect xD
15f30 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20  isconnect,..    
15f40 20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65      xDestroy xDe
15f50 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70  stroy, xOpen xOp
15f60 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  en, xClose xClos
15f70 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  e, xFilter xFilt
15f80 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65  er,..        xNe
15f90 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78  xt xNext, xEof x
15fa0 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  Eof, xColumn xCo
15fb0 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f  lumn, xRowId xRo
15fc0 77 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70  wId, xUpdate xUp
15fd0 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78  date,..        x
15fe0 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53  Begin xBegin, xS
15ff0 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d  ync xSync, xComm
16000 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c  it xCommit, xRol
16010 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c  lback xRollback,
16020 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46  ..        xFindF
16030 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
16040 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78  ction, xRename x
16050 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69  Rename, xSavepoi
16060 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a  nt xSavepoint,..
16070 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65          xRelease
16080 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c   xRelease, xRoll
16090 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b  backTo xRollback
160a0 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  To, IntPtr pClie
160b0 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20  ntData,..       
160c0 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
160d0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b  xDestroyModule);
160e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
160f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
16100 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
16110 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
16120 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16130 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16180 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
16190 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65   Native Delegate
161a0 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
161b0 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69  IRTUAL_TABLE..#i
161c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
161d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
161e0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
161f0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16200 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16210 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
16220 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
16230 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16240 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20  de xCreate(..   
16250 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
16260 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16270 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
16280 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
16290 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
162a0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
162b0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
162c0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
162d0 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
162e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
162f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16340 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16350 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
16360 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
16370 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
16380 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
16390 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
163a0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
163b0 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63  rrorCode xConnec
163c0 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
163d0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
163e0 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
163f0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
16400 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16410 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
16420 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
16430 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
16440 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
16450 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
164b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
164c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
164d0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
164e0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
164f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16500 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16510 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
16520 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16530 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
16540 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16550 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
16560 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29  tr pIndex..    )
16570 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165c0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
165d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
165e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
165f0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
16600 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16620 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
16630 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
16640 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69  iteErrorCode xDi
16650 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
16660 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
16670 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
166d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
166e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
166f0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
16700 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16710 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16720 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
16730 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
16740 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16750 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
16760 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16770 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
16780 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
167d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
167e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
167f0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16800 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16810 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16820 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16830 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16840 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
16850 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
16860 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16870 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
16880 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
16890 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
168a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
168f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16900 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16910 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
16920 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16930 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16940 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
16950 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
16960 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16970 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20  de xClose(..    
16980 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
16990 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
169a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
169b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169c0 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
169f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16a00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16a10 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16a20 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16a30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16a40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16a50 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16a60 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
16a70 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a  rCode xFilter(..
16a80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16a90 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
16aa0 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20   int idxNum,..  
16ab0 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78        IntPtr idx
16ac0 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Str,..        in
16ad0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
16ae0 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
16af0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
16b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
16b50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16b70 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
16b80 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
16b90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16ba0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16bb0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
16bc0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16bd0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
16be0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
16bf0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
16c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
16c50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16c60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16c70 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16c80 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16c90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16ca0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16cb0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16cc0 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20  e int xEof(..   
16cd0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
16ce0 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
16cf0 20 20 20 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 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16d40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16d50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16d60 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
16d70 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
16d80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16d90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
16da0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
16db0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
16dc0 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
16dd0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16de0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
16df0 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
16e00 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  t,..        int 
16e10 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  index..    );...
16e20 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16e80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16e90 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
16ea0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
16eb0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
16ec0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
16ed0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
16ee0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
16ef0 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28  rrorCode xRowId(
16f00 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16f10 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
16f20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
16f30 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  d..    );....   
16f40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
16f90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16fa0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16fb0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
16fc0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
16fd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16fe0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16ff0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17000 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17010 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
17020 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
17030 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
17040 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
17050 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
17060 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
17070 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
17080 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
170e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
170f0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
17100 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
17110 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
17120 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
17130 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
17140 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
17150 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28  rrorCode xBegin(
17160 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
17170 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
17180 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
171e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
171f0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
17200 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
17210 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
17220 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17230 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
17240 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
17250 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
17260 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
17270 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
17280 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172d0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
172e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
172f0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
17300 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
17310 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
17320 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17330 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
17340 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
17350 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69  ErrorCode xCommi
17360 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
17370 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
17380 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173d0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
173e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
173f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
17400 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
17410 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
17420 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17430 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
17440 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
17450 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
17460 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
17470 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
17480 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
17490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
174e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
174f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17500 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
17510 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
17520 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17530 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17540 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
17550 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
17560 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
17570 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
17580 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
17590 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
175a0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  me,..        ref
175b0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
175c0 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
175d0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55     ref IntPtr pU
175e0 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d  serData..    );.
175f0 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
17650 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17660 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
17670 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
17680 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
176a0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
176b0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
176c0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61  eErrorCode xRena
176d0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  me(..        Int
176e0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
176f0 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
17700 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
17760 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17770 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17780 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
17790 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
177a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
177b0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
177c0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
177d0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
177e0 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
177f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17800 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
17810 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
17820 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
17860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17870 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
17880 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17890 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
178a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
178b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
178c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
178d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
178e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
178f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17900 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
17910 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
17920 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
17930 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
17940 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
179a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
179b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
179c0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
179d0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
179e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
179f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
17a00 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
17a10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
17a20 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
17a30 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
17a40 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
17a50 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
17a60 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ab0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
17ac0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17ad0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
17ae0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
17af0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
17b00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17b10 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
17b20 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  ic delegate void
17b30 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28   xDestroyModule(
17b40 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
17b50 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ta);..#endif..  
17b60 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
17b70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17bc0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e  ...    #region N
17bd0 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73  ative Structures
17be0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
17bf0 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
17c00 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
17c10 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
17c20 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
17c30 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
17c40 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
17c50 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
17c60 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d  c int iVersion;.
17c70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17c80 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b  xCreate xCreate;
17c90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17ca0 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
17cb0 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
17cc0 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78  lic xBestIndex x
17cd0 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20  BestIndex;..    
17ce0 20 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63      public xDisc
17cf0 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
17d00 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
17d10 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65  lic xDestroy xDe
17d20 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20  stroy;..        
17d30 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
17d40 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  en;..        pub
17d50 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  lic xClose xClos
17d60 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
17d70 69 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  ic xFilter xFilt
17d80 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  er;..        pub
17d90 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b  lic xNext xNext;
17da0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17db0 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20   xEof xEof;..   
17dc0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c       public xCol
17dd0 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  umn xColumn;..  
17de0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
17df0 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20  wId xRowId;..   
17e00 20 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64       public xUpd
17e10 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20  ate xUpdate;..  
17e20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
17e30 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
17e40 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e       public xSyn
17e50 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20  c xSync;..      
17e60 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74    public xCommit
17e70 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20   xCommit;..     
17e80 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
17e90 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a  ack xRollback;..
17ea0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
17eb0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
17ec0 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20  ndFunction;..   
17ed0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e       public xRen
17ee0 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20  ame xRename;..  
17ef0 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74        /* The met
17f00 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69  hods above are i
17f10 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74  n version 1 of t
17f20 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  he sqlite3_modul
17f30 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62  e..         * ob
17f40 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c  ject.  Those bel
17f50 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
17f60 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72  on 2 and greater
17f70 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  . */..        pu
17f80 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20  blic xSavepoint 
17f90 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20  xSavepoint;..   
17fa0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c       public xRel
17fb0 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a  ease xRelease;..
17fc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
17fd0 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
17fe0 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
17ff0 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
18050 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
18060 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
18070 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
18080 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
18090 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
180a0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
180b0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
180c0 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66   public int nRef
180d0 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55  ; /* NO LONGER U
180e0 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
180f0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45  public IntPtr zE
18100 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rrMsg;..    }...
18110 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18160 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
18170 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
18180 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
18190 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
181a0 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
181b0 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20  cursor..    {.. 
181c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
181d0 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20  tPtr pVTab;..   
181e0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
181f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
18240 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
18250 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
18260 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
18270 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
18280 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
18290 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
182a0 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
182b0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
182c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
182d0 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
182e0 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d  aint constraint.
182f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
18300 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
18310 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
18320 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
18330 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e  (constraint != n
18340 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
18350 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18360 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63       iColumn = c
18370 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d  onstraint.iColum
18380 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
18390 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61      op = constra
183a0 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20  int.op;..       
183b0 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20           usable 
183c0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61  = constraint.usa
183d0 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
183e0 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65        iTermOffse
183f0 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  t = constraint.i
18400 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
18410 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18420 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18430 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18480 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
18490 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
184a0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
184b0 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20  dexConstraintOp 
184c0 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  op;..        pub
184d0 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
184e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
184f0 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
18500 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18560 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
18570 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
18580 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
18590 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
185a0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
185b0 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rby..    {..    
185c0 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
185d0 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
185e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
185f0 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
18600 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
18610 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
18620 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
18630 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18640 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72         if (order
18650 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  By != null)..   
18660 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18670 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
18680 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43  umn = orderBy.iC
18690 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
186a0 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f          desc = o
186b0 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20  rderBy.desc;..  
186c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
186d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
186e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
186f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18730 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
18740 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
18750 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
18760 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
18770 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75  e desc;   /* Tru
18780 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
18790 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a  se for ASC. */..
187a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18800 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
18810 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
18820 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
18830 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
18840 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
18850 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b  int_usage..    {
18860 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18870 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
18880 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
18890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
188a0 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
188b0 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61  intUsage constra
188c0 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
188d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
188e0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
188f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18900 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
18910 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c  aintUsage != nul
18920 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18940 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63     argvIndex = c
18950 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61  onstraintUsage.a
18960 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rgvIndex;..     
18970 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20             omit 
18980 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
18990 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20  e.omit;..       
189a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
189b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
189c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18a10 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
18a20 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20  ndex; /* if >0, 
18a30 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
18a40 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
18a50 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
18a60 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d    public byte om
18a70 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f  it;     /* Do no
18a80 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
18a90 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
18aa0 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  t */..    }.... 
18ab0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18b00 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
18b10 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
18b20 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
18b30 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
18b40 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
18b50 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nfo..    {..    
18b60 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f      /* Inputs */
18b70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18b80 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
18b90 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65  ; /* Number of e
18ba0 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74  ntries in aConst
18bb0 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20  raint */..      
18bc0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
18bd0 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20  aConstraint;..  
18be0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
18bf0 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a   nOrderBy;    /*
18c00 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
18c10 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a  es in aOrderBy *
18c20 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
18c30 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
18c40 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
18c50 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
18c60 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
18c70 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
18c80 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
18c90 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20  ic int idxNum;  
18ca0 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
18cb0 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
18cc0 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
18cd0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18ce0 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20   string idxStr; 
18cf0 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67         /* String
18d00 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69  , possibly obtai
18d10 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
18d20 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20  _malloc */..    
18d30 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
18d40 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
18d50 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
18d60 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
18d70 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
18d80 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18d90 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
18da0 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66  med;  /* True if
18db0 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61   output is alrea
18dc0 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20  dy ordered */.. 
18dd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
18de0 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f  uble estimatedCo
18df0 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  st; /* Estimated
18e00 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
18e10 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  his index */..  
18e20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e        public lon
18e30 67 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b  g estimatedRows;
18e40 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20     /* Estimated 
18e50 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72  number of rows r
18e60 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20  eturned */..    
18e70 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
18e80 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46  eIndexFlags idxF
18e90 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66  lags; /* Mask of
18ea0 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43   SQLITE_INDEX_SC
18eb0 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20  AN_* flags */.. 
18ec0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
18ed0 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20  ng colUsed;     
18ee0 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61      /* Input: Ma
18ef0 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73  sk of columns us
18f00 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20  ed by statement 
18f10 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  */..    }..#endi
18f20 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
18f30 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f  n..  }....  ////
18f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
18f90 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
18fa0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e  TFRAMEWORK..  in
18fb0 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
18fc0 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
18fd0 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
18fe0 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69  le..  {..    pri
18ff0 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f  vate bool _isClo
19000 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63  sed;..    protec
19010 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c  ted IntPtr handl
19020 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  e;....    protec
19030 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ted CriticalHand
19040 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69  le(IntPtr invali
19050 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20  dHandleValue).. 
19060 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
19070 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64  le = invalidHand
19080 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  leValue;..      
19090 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73  _isClosed = fals
190a0 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
190b0 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65   ~CriticalHandle
190c0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
190d0 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
190e0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
190f0 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61  rivate void Clea
19100 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nup()..    {..  
19110 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65      if (!IsClose
19120 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  d)..      {..   
19130 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
19140 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
19150 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61       if (!IsInva
19160 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lid)..        {.
19170 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61  .          Relea
19180 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  seHandle();..   
19190 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
191a0 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
191b0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
191c0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
191d0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
191e0 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  Close()..    {..
191f0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
19200 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
19210 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
19220 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d  ispose()..    {.
19230 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
19240 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
19250 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
19260 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
19270 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
19280 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
19290 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20   Cleanup();..   
192a0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
192b0 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f  ted abstract boo
192c0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
192d0 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  );....    protec
192e0 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64  ted void SetHand
192f0 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29  le(IntPtr value)
19300 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68  ..    {..      h
19310 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a  andle = value;..
19320 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
19330 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64  lic void SetHand
19340 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20  leAsInvalid().. 
19350 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43     {..      _isC
19360 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
19370 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
19380 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
19390 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
193a0 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73  blic bool IsClos
193b0 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ed..    {..     
193c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69   get { return _i
193d0 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20  sClosed; }..    
193e0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
193f0 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73  abstract bool Is
19400 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a  Invalid..    {..
19410 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20        get;..    
19420 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64  }....  }....#end
19430 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  if....    //////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19490 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gion SQLiteConne
194a0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73  ctionHandle Clas
194b0 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65  s..    // Handle
194c0 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20  s the unmanaged 
194d0 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72  database pointer
194e0 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66  , and provides f
194f0 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20  inalization..   
19500 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20   // support for 
19510 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  it...    interna
19520 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
19530 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
19540 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
19550 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
19560 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
19570 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f  RD && !PLATFORM_
19580 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19590 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
195a0 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  al delegate void
195b0 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
195c0 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
195d0 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
195e0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64  nectionHandle hd
195f0 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  l, IntPtr db);..
19600 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
19610 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43  al static CloseC
19620 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
19630 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  k closeConnectio
19640 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
19650 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
19660 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65  eConnection;..#e
19670 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50  ///////....#if P
196d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
196e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
196f0 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
19700 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
19710 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
19720 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
19730 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19780 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
19790 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e bool ownHandle
197a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19800 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
19810 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
19820 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e  IntPtr(SQLiteCon
19830 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62  nectionHandle db
19840 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
19850 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 62            if (db
19860 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
19870 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
19880 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19890 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
198a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64           lock (d
198b0 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  b.syncRoot)..#en
198c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
198d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
198e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
198f0 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20  rn db.handle;.. 
19900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19920 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
19930 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
19940 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
19950 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
199a0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
199b0 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  al SQLiteConnect
199c0 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  ionHandle(IntPtr
199d0 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e   db, bool ownHan
199e0 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
199f0 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64    : this(ownHand
19a00 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  le)..        {..
19a10 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
19a20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19a30 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
19a40 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
19a50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
19a60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19a70 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c     this.ownHandl
19a80 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a  e = ownHandle;..
19a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19aa0 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a  SetHandle(db);..
19ab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19ac0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19ad0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19b20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
19b30 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
19b40 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61  andle(bool ownHa
19b50 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
19b60 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
19b70 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
19b80 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
19b90 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
19ba0 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d   if (ownHandle).
19bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19bc0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
19bd0 72 65 6d 65 6e 74 28 72 65 66 20 55 6e 73 61 66  rement(ref Unsaf
19be0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63  eNativeMethods.c
19bf0 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
19c00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
19c10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
19c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19c70 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
19c80 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
19c90 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
19ca0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
19cb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19cc0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
19cd0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
19ce0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
19cf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19d00 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 77           if (!ow
19d10 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20  nHandle) return 
19d20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
19d30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19d40 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
19d50 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
19d60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19d70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
19d80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
19d90 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
19da0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
19db0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
19dc0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
19dd0 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
19de0 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f  ;....#if SQLITE_
19df0 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
19e00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
19e10 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
19e20 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
19e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
19e40 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
19e50 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  his, localHandle
19e60 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
19e70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
19e80 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
19e90 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
19ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19eb0 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
19ec0 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c  Connection(this,
19ed0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
19ee0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e  #endif....#if !N
19ef0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
19f00 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
19f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
19f20 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
19f30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19f40 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
19f50 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66  .WriteLine(Unsaf
19f60 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53  eNativeMethods.S
19f70 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
19f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f90 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
19fa0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
19fb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19fc0 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
19fd0 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
19fe0 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
19ff0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
1a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a020 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
1a030 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a040 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1a050 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
1a060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1a070 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
1a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a0a0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
1a0b0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1a0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a0d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0f0 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
1a100 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
1a110 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a130 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1a140 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a160 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a170 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1a180 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1a190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a1a0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1a1b0 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1a1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1a1d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1a1e0 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
1a1f0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
1a200 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1a210 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1a220 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
1a230 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a240 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1a250 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1a260 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1a270 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1a280 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
1a290 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
1a2a0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1a2b0 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1a2d0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1a2e0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1a2f0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1a300 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1a310 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a330 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1a340 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1a350 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1a360 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1a370 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1a380 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1a390 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3b0 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
1a3c0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1a3d0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3f0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1a400 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1a410 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1a430 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1a440 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a450 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1a460 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1a470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1a480 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1a490 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1a4a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a4b0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1a4c0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1a4d0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a500 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1a510 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1a520 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a530 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1a540 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1a550 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1a560 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1a570 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1a580 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1a590 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a5a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
1a5f0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1a600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1a610 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1a620 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1a630 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a640 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1a650 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1a660 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
1a670 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1a680 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1a690 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
1a6a0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1a6b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1a700 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
1a710 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20  OwnHandle..     
1a720 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a730 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
1a740 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1a750 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a760 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1a770 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1a780 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1a790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a7b0 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48       return ownH
1a7c0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
1a7d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a7e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a7f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a850 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
1a860 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
1a870 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a880 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
1a890 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1a8a0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1a8b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1a8d0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1a8e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1a8f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a910 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
1a920 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1a930 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a950 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a960 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a9b0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1a9c0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
1a9d0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
1a9e0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
1a9f0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1aa00 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1aa10 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1aa20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1aa30 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1aa40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1aa50 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
1aa60 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
1aa70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1aa80 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1aa90 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1aaa0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1ab00 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
1ab10 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c  atementHandle Cl
1ab20 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76  ass..    // Prov
1ab30 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
1ab40 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
1ab50 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
1ab60 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20  tatements...    
1ab70 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
1ab80 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74  class SQLiteStat
1ab90 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72  ementHandle : Cr
1aba0 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
1abb0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1abc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1abd0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
1abe0 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
1abf0 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
1ac00 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
1ac10 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1ac20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1ac70 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
1ac80 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1ac90 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
1aca0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1acf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1ad00 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
1ad10 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
1ad20 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
1ad30 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  le stmt)..      
1ad40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ad50 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c   if (stmt != nul
1ad60 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1ad70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1ad80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ad90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ada0 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e    lock (stmt.syn
1adb0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1add0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ade0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74         return st
1adf0 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  mt.handle;..    
1ae00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ae10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ae20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1ae30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
1ae40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ae50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1aea0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1aeb0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1aec0 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
1aed0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1aee0 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a  , IntPtr stmt)..
1aef0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1af00 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1af10 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1af20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1af30 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1af40 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1af50 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1af60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1af70 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
1af80 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
1af90 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73       SetHandle(s
1afa0 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tmt);..         
1afb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1afc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b010 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1b020 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74  ivate SQLiteStat
1b030 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20  ementHandle().. 
1b040 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
1b050 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
1b060 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
1b070 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1b080 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
1b090 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d  cked.Increment(.
1b0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b0b0 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
1b0c0 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
1b0d0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
1b0e0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1b0f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b140 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
1b150 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
1b160 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1b170 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1b180 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1b190 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1b1a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b1b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1b1d0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
1b1e0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
1b1f0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
1b200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1b210 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
1b220 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
1b230 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b240 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
1b250 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b270 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
1b280 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
1b290 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
1b2a0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
1b2b0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1b2c0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1b2d0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b300 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1b310 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69 76  Line(UnsafeNativ
1b320 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  eMethods.StringF
1b330 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b350 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1b360 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1b370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b380 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
1b390 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c  atement: {0}", l
1b3a0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
1b3b0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1b3c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1b3e0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1b3f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b400 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1b410 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
1b420 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1b430 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1b440 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b460 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
1b470 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1b4b0 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65  iteBase.Finalize
1b4c0 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68  Statement(cnn, h
1b4d0 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
1b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4f0 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
1b500 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1b510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b530 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
1b540 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1b550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1b560 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1b570 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1b580 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1b590 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b5a0 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  s.statementCount
1b5b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1b5c0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1b5d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1b5e0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1b5f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1b600 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1b610 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1b620 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1b630 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1b640 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1b650 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1b660 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1b670 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1b680 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1b690 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1b6a0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1b6d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b6e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1b6f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73 61  e.WriteLine(Unsa
1b700 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1b710 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
1b720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b730 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1b740 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1b750 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1b760 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
1b770 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20  alizeStatement: 
1b780 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
1b790 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
1b7b0 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
1b7c0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1b7d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1b7f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1b800 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b810 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b820 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b830 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
1b840 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
1b850 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1b860 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b870 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1b880 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1b890 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8c0 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
1b8d0 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
1b8e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b8f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1b900 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1b910 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b920 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1b930 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
1b940 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1b950 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
1b9b0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1b9c0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1b9d0 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
1b9e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1b9f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1ba00 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1ba10 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
1ba20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
1ba30 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1ba40 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d  tatementCount);.
1ba50 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1ba60 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
1ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1bac0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1bad0 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
1bae0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1baf0 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
1bb00 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1bb10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1bb20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1bb30 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1bb40 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1bb50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1bb60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bb70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1bb80 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
1bb90 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1bba0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1bbb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1bbc0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1bbd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1bc20 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1bc30 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1bc40 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
1bc50 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1bc60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1bc70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bc80 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1bc90 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1bca0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1bcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bcc0 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
1bcd0 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
1bce0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bcf0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1bd00 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1bd10 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1bd70 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63  region SQLiteBac
1bd80 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  kupHandle Class.
1bd90 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
1bda0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
1bdb0 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
1bdc0 67 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75  ged SQLite backu
1bdd0 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20  p objects...    
1bde0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
1bdf0 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b  class SQLiteBack
1be00 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  upHandle : Criti
1be10 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
1be20 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1be30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1be40 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
1be50 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
1be60 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
1be70 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
1be80 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bed0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1bee0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43   private SQLiteC
1bef0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1bf00 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  cnn;....        
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1bf60 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1bf70 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
1bf80 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
1bf90 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63  BackupHandle bac
1bfa0 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  kup)..        {.
1bfb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1bfc0 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29  (backup != null)
1bfd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1bfe0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1bff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c010 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e  lock (backup.syn
1c020 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c050 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61         return ba
1c060 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  ckup.handle;..  
1c070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c080 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1c090 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1c0a0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
1c0b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1c0c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c110 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
1c120 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  l SQLiteBackupHa
1c130 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
1c140 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
1c150 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d   IntPtr backup).
1c160 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
1c170 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
1c180 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1c190 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1c1b0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1c1c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1c1d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c1e0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
1c1f0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
1c200 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1c210 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20  backup);..      
1c220 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c230 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c280 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c290 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42   private SQLiteB
1c2a0 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20  ackupHandle().. 
1c2b0 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
1c2c0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
1c2d0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
1c2e0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1c2f0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
1c300 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d  cked.Increment(.
1c310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c320 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
1c330 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43  eMethods.backupC
1c340 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
1c350 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1c360 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c3b0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
1c3c0 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
1c3d0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
1c3e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1c3f0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1c400 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1c410 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c420 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c430 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1c440 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
1c450 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
1c460 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
1c470 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1c480 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
1c490 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ero);....       
1c4a0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
1c4b0 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
1c4c0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1c4e0 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42  LiteBase.FinishB
1c4f0 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c  ackup(cnn, local
1c500 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  Handle);....#if 
1c510 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1c520 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1c530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c540 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1c550 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c560 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1c570 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73  ce.WriteLine(Uns
1c580 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1c590 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
1c5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5b0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
1c5c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
1c5d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
1c5f0 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
1c600 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
1c610 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c640 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1c650 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c660 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1c670 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
1c680 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1c690 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1c6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c6c0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
1c6d0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1c6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c6f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c710 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
1c720 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e  hBackup(cnn, han
1c730 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1c750 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
1c760 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1c770 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1c780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1c790 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
1c7a0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1c7b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
1c7c0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
1c7d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1c7e0 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
1c7f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c800 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
1c810 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
1c820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c830 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1c840 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1c850 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
1c860 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1c870 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1c880 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1c890 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
1c8a0 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
1c8b0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1c8c0 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
1c8d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1c8e0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
1c8f0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1c900 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1c910 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1c920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c940 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1c950 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74  teLine(UnsafeNat
1c960 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  iveMethods.Strin
1c970 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1c980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c990 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1c9a0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1c9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9c0 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
1c9d0 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ckup: {0}, excep
1c9e0 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
1c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca00 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
1ca10 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
1ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1ca30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ca40 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
1ca50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1ca60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1ca70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1ca80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1ca90 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
1caa0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1cab0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1cac0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1cad0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1cae0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1caf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cb00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cb10 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1cb20 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
1cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1cb50 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1cb60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cb70 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
1cb80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1cb90 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
1cba0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1cbb0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1cbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbd0 2f 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 0d 0a 0d  /////////////...
1cc00 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1cc10 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
1cc20 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
1cc30 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
1cc40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1cc50 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
1cc60 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
1cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1cc80 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1cc90 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
1cca0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
1ccb0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1ccc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cd10 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1cd20 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
1cd30 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
1cd40 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
1cd50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1cd60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1cd70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1cd90 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1cda0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1cdb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1cdd0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
1cde0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1ce00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1ce10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1ce20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ce70 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1ce80 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1ce90 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
1cea0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
1ceb0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1cec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ced0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1cee0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1cef0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1cf00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cf10 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
1cf20 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
1cf30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1cf40 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1cf50 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1cf60 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..