System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0d5bbf505a380983324abebc6060048bc7a332f5:


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 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
10660 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10670 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
10680 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
10690 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
106a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
106b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
106c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
106d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
106e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
106f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10700 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
10710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10720 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10730 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10740 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
10750 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
10760 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
10770 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
10780 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10790 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
107a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
107b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
107c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
107d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
107e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
107f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10800 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10810 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10820 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10830 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10840 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
10850 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
10860 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
10870 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
10880 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
10890 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
108a0 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
108b0 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
108c0 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
108d0 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
108e0 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
108f0 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
10900 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
10910 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
10920 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10930 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10940 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10950 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
10960 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
10970 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
10980 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10990 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
109a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
109b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
109c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
109d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
109e0 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
109f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10a00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10a10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10a20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
10a30 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
10a40 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
10a50 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
10a60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10a70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10a80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10a90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10aa0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10ab0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10ac0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
10ad0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
10ae0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
10af0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
10b00 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
10b10 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
10b20 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
10b30 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
10b40 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
10b50 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
10b60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
10b70 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
10b80 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
10b90 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
10ba0 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
10bb0 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
10bc0 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
10bd0 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
10be0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10bf0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10c00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10c10 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
10c20 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
10c30 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
10c40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10c50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10c60 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
10c70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10c80 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
10c90 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
10ca0 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
10cb0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
10cc0 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
10cd0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
10ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10cf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10d00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10d10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10d20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10d30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10d40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10d50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10d60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10d70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10d80 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10d90 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10da0 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
10db0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10dc0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10dd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10de0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10df0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10e00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10e10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10e20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10e30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10e40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10e50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10e60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10e70 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10e80 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10e90 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
10ea0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10eb0 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
10ec0 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
10ed0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
10ee0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10ef0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10f00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10f10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10f20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10f30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10f40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10f50 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10f60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10f70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10f80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10f90 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
10fa0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
10fb0 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
10fc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10fd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10fe0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10ff0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11000 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11010 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11020 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11030 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11050 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11060 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11070 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
11080 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
11090 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
110a0 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
110b0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
110c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
110d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
110e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
110f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11100 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11110 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11120 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11130 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11140 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11150 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11160 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
11170 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
11180 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
11190 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
111a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
111b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
111c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
111d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
111e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
111f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11200 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11210 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11220 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11230 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11240 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
11250 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
11260 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
11270 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11280 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11290 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
112a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
112b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
112c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
112d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
112e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
112f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11300 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11310 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11320 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
11330 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
11340 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
11350 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#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 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
113d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
113e0 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
113f0 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
11400 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
11410 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
11420 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11430 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11440 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11450 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11460 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11470 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11480 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11490 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
114a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
114b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
114c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
114d0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
114e0 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
114f0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
11500 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11550 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11560 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11580 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
11590 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
115a0 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
115b0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
115c0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
115d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
115e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
115f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11600 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11610 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11620 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11630 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11640 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11650 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11660 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11670 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
11680 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
11690 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
116a0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
116b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
116c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
116d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
116e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
116f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11710 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11720 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11730 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11740 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11750 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11760 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
11770 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
11780 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11790 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
117a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
117b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
117c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
117d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
117e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
117f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11800 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11810 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11820 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11830 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11840 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
11850 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
11860 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
11870 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
11880 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11890 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
118a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
118b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
118c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
118d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
118e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
118f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11900 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11910 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11920 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11930 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
11940 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
11950 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11960 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
11970 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11980 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11990 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
119a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
119b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
119c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
119d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
119e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
119f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11a00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11a10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11a20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11a30 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
11a40 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
11a50 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
11a60 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
11a70 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
11a80 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
11a90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11aa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11ab0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11ac0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11ad0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11ae0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11af0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11b00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11b10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11b20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11b30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11b40 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
11b50 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
11b60 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
11b70 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
11b80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11b90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11ba0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11bb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11bc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11bd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11be0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11bf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11c00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11c10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11c20 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11c30 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
11c40 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
11c50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11c60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11c70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11c80 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11c90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11ca0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11cb0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11cc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11cd0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11ce0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11cf0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11d00 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
11d10 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
11d20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
11d30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11d40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11d50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11d60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11d70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11d80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11d90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11da0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11db0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11dc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11dd0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
11de0 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
11df0 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
11e00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11e10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11e20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11e30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11e40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11e50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11e60 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
11e70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11e80 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
11e90 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
11ea0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
11eb0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
11ec0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11ed0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11ee0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11ef0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11f00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11f10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11f20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11f30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11f40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11f50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11f60 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
11f70 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
11f80 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
11f90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11fa0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11fb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11fc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11fd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11fe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11ff0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
12000 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12010 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
12020 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
12030 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
12040 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12050 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12070 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
120a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
120b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
120c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
120d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
120e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
120f0 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
12100 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
12110 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
12120 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12130 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12150 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12160 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12170 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12180 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12190 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
121a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
121b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
121c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
121d0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
121e0 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
121f0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
12200 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
12210 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
12220 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
12230 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12240 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12250 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12260 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12270 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12280 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12290 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
122a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
122b0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
122c0 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
122d0 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
122e0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
122f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12300 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12310 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12320 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12330 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12340 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12350 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12360 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12370 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12380 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12390 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
123a0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
123b0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
123c0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
123d0 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
123e0 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
123f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12400 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12410 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12420 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12430 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12440 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12450 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12460 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12470 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12480 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12490 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
124a0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
124b0 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
124c0 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
124d0 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
124e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
124f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12500 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12520 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12530 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12540 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12550 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12560 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12570 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12580 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12590 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
125a0 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
125b0 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
125c0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
125d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
125e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
125f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12600 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12610 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12620 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12630 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12640 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12650 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12660 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12670 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
12680 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
12690 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
126a0 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
126b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
126c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
126d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
126e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
126f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12710 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12720 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12730 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12740 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12750 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12760 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
12770 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
12780 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
12790 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
127a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
127b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
127c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
127d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
127e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
127f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12800 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12810 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12820 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12830 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12840 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
12850 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
12860 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
12870 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
12880 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
12890 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
128a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
128b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
128c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
128d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
128e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
128f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12900 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12910 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12920 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12930 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
12940 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
12950 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
12960 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
12970 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12980 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12990 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
129a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
129b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
129c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
129d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
129e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
129f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
12a00 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
12a10 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
12a20 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
12a30 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
12a40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12a50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12a60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12a70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12a80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12a90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12aa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12ab0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ac0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12ad0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12ae0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
12af0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
12b00 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
12b10 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
12b20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12b30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12b40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12b50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12b60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12b70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12b80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12b90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ba0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12bb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12bc0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
12bd0 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
12be0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
12bf0 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
12c00 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
12c10 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
12c20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12c30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12c40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12c50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12c60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12c70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12c80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12c90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12ca0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12cb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12cc0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12cd0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12ce0 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
12cf0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
12d00 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
12d10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12d20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12d30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12d40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12d50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12d60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12d70 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
12d80 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
12d90 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
12da0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12db0 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
12dc0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
12dd0 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
12de0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12df0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12e00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12e10 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
12e20 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
12e30 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
12e40 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
12e50 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
12e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12ec0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
12ed0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
12ee0 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
12ef0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12f00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
12f10 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
12f20 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
12f30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12f40 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
12f50 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
12f60 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
12f70 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
12f80 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
12f90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12fa0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12fb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12fc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12fd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12fe0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12ff0 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
13000 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
13010 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
13020 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13030 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
13040 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
13050 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
13060 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13070 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
13080 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
13090 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
130a0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
130b0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
130c0 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
130d0 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
130e0 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
130f0 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
13100 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13110 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13140 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13150 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13170 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13190 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
131a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
131b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
131c0 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
131d0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
131e0 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
131f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13200 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13210 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13220 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13230 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13240 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13250 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13260 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13270 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13280 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13290 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
132a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
132b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
132c0 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
132d0 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
132e0 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
132f0 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
13300 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
13310 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13320 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13330 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13340 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13350 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13360 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13370 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13380 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13390 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
133a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
133b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
133c0 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
133d0 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
133e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
133f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13400 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13410 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13420 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13430 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13440 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13450 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13460 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13470 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13480 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
13490 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
134a0 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
134b0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
134c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
134d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
134e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
134f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13500 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13510 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13520 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13530 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13540 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13550 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13560 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
13570 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
13580 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
13590 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
135a0 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
135b0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
135c0 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
135d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
135e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
135f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13600 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13610 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13620 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13630 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13640 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13650 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13660 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13670 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13680 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
13690 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
136a0 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
136b0 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
136c0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
136d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
136e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
136f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13700 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13710 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13720 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13730 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13740 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13750 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13760 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13770 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13780 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
13790 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
137a0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
137b0 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
137c0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
137d0 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
137e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
137f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13800 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13810 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13820 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13830 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13840 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13860 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13870 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13880 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13890 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
138a0 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
138b0 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
138c0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
138d0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
138e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
138f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13900 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13910 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13920 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13930 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13940 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13960 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13970 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13980 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13990 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
139a0 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
139b0 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
139c0 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
139d0 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
139e0 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
139f0 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
13a00 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
13a10 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
13a20 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
13a30 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
13a40 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
13a50 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
13a60 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
13a70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13a80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13a90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13aa0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
13ab0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
13ac0 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
13ad0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13ae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13af0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13b00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13b10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
13b20 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
13b30 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
13b40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13b50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13b60 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13b70 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
13b80 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
13b90 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
13ba0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13bb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13bc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13bd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
13be0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
13bf0 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
13c00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13c10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13c20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13c30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13c40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
13c50 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
13c60 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
13c70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13c80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13c90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13ca0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
13cb0 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
13cc0 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
13cd0 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
13ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13cf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13d00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13d10 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13d20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
13d30 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
13d40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13d50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13d60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13d70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13d80 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13d90 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
13da0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
13db0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13dc0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13dd0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13de0 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
13df0 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
13e00 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
13e10 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
13e20 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
13e30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13e40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13e50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13e60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13e70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13e80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13e90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13ea0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13eb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13ec0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13ed0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13ee0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72  IntPtr sqlite3_r
13ef0 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74  ollback_hook(Int
13f00 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f  Ptr db, SQLiteRo
13f10 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66  llbackCallback f
13f20 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
13f30 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
13f40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13f50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13f60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13f70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13f80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13f90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13fa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13fb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13fc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13fd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13fe0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13ff0 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c  sqlite3_db_handl
14000 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  e(IntPtr stmt);.
14010 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14020 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14030 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14040 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14050 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14060 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14070 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14080 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14090 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
140a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
140b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
140c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
140d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  ode sqlite3_db_r
140e0 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e  elease_memory(In
140f0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
14100 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14110 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14120 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14130 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14140 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14160 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14170 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14180 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14190 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
141a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
141b0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
141c0 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20  filename(IntPtr 
141d0 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
141e0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
141f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14200 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14220 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14230 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14240 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14250 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14270 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14280 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14290 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
142a0 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
142b0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
142c0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
142d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
142e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
142f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14300 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14310 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14320 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14330 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14350 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14360 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14370 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14380 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14390 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
143a0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
143b0 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
143c0 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
143d0 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50  vParam, ref IntP
143e0 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
143f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14400 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14410 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14420 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14430 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14440 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14450 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14460 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14470 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14480 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14490 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
144a0 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65  int sqlite3_rele
144b0 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e  ase_memory(int n
144c0 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
144d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
144e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
144f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14500 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14510 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14520 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14530 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14550 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14560 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14570 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
14580 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
14590 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
145a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
145b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
145c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
145d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
145e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
145f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14600 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14610 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14620 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14630 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14640 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14650 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14660 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
14670 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
14680 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  odes(IntPtr db, 
14690 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23  int onoff);....#
146a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
146b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
146c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
146d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
146e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
146f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14700 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14710 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14720 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14730 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14740 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14750 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14760 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
14770 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
14780 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14790 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
147a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
147b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
147c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
147d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
147e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
147f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14800 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14810 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14820 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14830 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14840 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
14850 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
14860 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
14870 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14880 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
148a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
148b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
148c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
148d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
148e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
148f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14900 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14910 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14920 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53  sqlite3_errstr(S
14930 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
14940 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a  c); /* 3.7.15+ *
14950 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  /....    // Sinc
14960 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20  e sqlite3_log() 
14970 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
14980 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
14990 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
149a0 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
149b0 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
149c0 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e   possible calls.
149d0 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72    For now, we ar
149e0 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20  e only exposing 
149f0 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c  a single string,
14a00 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70   and..    // dep
14a10 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
14a20 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
14a30 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
14a40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14a50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14a60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14a70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14a80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14a90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14aa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14ab0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14ac0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14ad0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14ae0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
14af0 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74  qlite3_log(SQLit
14b00 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
14b10 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72  ode, byte[] zFor
14b20 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  mat);....#if !PL
14b30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14b40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14b50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14b60 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14b70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14b80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14b90 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14ba0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14bb0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14bc0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14bd0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14be0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14bf0 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
14c00 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
14c10 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
14c20 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
14c30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14c40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14c50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14c60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14c70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14c80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14c90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14ca0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14cb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14cc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14cd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14ce0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
14cf0 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49  e3_backup_init(I
14d00 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79  ntPtr destDb, by
14d10 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20  te[] zDestName, 
14d20 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c  IntPtr sourceDb,
14d30 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e   byte[] zSourceN
14d40 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
14d50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14d60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14d70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14d80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14d90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14da0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14db0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14dc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14dd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14df0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14e00 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14e10 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e  3_backup_step(In
14e20 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74  tPtr backup, int
14e30 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20   nPage);....#if 
14e40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14e50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14e60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14e70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14e80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14e90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14ea0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14eb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ec0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14ed0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14ee0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
14ef0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
14f00 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72  remaining(IntPtr
14f10 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
14f20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14f30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14f40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14f50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14f60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14f70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14f80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14f90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14fa0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14fb0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14fc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
14fd0 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
14fe0 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74  _pagecount(IntPt
14ff0 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
15000 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15010 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15030 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15040 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15060 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15080 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15090 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
150a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
150b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
150c0 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
150d0 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tab(IntPtr db, I
150e0 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a  ntPtr zSQL);....
150f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15100 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15110 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15120 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15130 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15140 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15150 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15160 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15170 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15180 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15190 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
151a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
151b0 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66  mprintf(IntPtr f
151c0 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74  ormat, __arglist
151d0 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  );..    #endregi
151e0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c  on....    // SQL
151f0 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68  ite API calls th
15200 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  at are provided 
15210 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20  by "well-known" 
15220 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20  extensions that 
15230 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c  may be staticall
15240 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64  y..    // linked
15250 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
15260 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62   core native lib
15270 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69  rary currently i
15280 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67  n use...    #reg
15290 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71  ion extension sq
152a0 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
152b0 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
152c0 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
152d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
152e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
152f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15300 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15310 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15320 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15330 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15340 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15350 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15360 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15370 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
15380 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
15390 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
153a0 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
153b0 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
153c0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
153d0 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
153e0 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
153f0 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
15400 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
15410 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15420 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15430 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15440 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15450 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15460 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15470 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15480 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15490 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
154a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
154b0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
154c0 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
154d0 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64  dule(IntPtr pMod
154e0 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
154f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
15500 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
15560 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  sqlite interop a
15570 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43  pi calls (.NET C
15580 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
15590 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54   only)..#if PLAT
155a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
155b0 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
155c0 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b  _STANDARD..    [
155d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
155e0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
155f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15600 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
15610 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
15620 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
15630 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f   db, ref long ro
15640 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wId);....    [Dl
15650 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15660 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
15670 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15680 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
15690 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f  mory_used_intero
156a0 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  p(ref long bytes
156b0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
156c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
156d0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
156e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
156f0 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  id sqlite3_memor
15700 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65  y_highwater_inte
15710 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61  rop(int resetFla
15720 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  g, ref long byte
15730 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
15740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15750 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15760 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
15770 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
15780 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
15790 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
157a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
157b0 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
157c0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
157d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
157e0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
157f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15800 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15810 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
15820 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
15830 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
15840 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
15850 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
15860 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15870 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
15880 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
15890 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a  t64_interop")]..
158a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
158b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
158c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
158d0 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69  e3_bind_uint64_i
158e0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
158f0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
15900 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ef ulong value);
15910 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15920 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15930 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15940 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15950 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
15960 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
15970 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
15980 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
15990 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
159a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
159b0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
159c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
159d0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
159e0 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69  3_column_int64_i
159f0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
15a00 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
15a10 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
15a20 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15a30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15a40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15a50 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
15a60 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
15a70 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
15a80 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c  Ptr p, ref doubl
15a90 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
15aa0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15ab0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
15ac0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15ad0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
15ae0 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e  3_value_int64_in
15af0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
15b00 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
15b10 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
15b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15b30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15b40 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15b50 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
15b60 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
15b70 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15b80 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
15b90 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15ba0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15bb0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15bc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
15bd0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
15be0 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
15bf0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15c00 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
15c10 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
15c20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15c30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15c40 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15c50 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
15c60 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
15c70 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20  dule_interop(.. 
15c80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
15c90 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49  , IntPtr name, I
15ca0 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69  ntPtr pModule, i
15cb0 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72  nt iVersion, xCr
15cc0 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20  eate xCreate,.. 
15cd0 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20         xConnect 
15ce0 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49  xConnect, xBestI
15cf0 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c  ndex xBestIndex,
15d00 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
15d10 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20  sconnect,..     
15d20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73     xDestroy xDes
15d30 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65  troy, xOpen xOpe
15d40 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  n, xClose xClose
15d50 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  , xFilter xFilte
15d60 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78  r,..        xNex
15d70 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45  t xNext, xEof xE
15d80 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  of, xColumn xCol
15d90 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77  umn, xRowId xRow
15da0 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64  Id, xUpdate xUpd
15db0 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42  ate,..        xB
15dc0 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79  egin xBegin, xSy
15dd0 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69  nc xSync, xCommi
15de0 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c  t xCommit, xRoll
15df0 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d  back xRollback,.
15e00 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75  .        xFindFu
15e10 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
15e20 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52  tion, xRename xR
15e30 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e  ename, xSavepoin
15e40 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20  t xSavepoint,.. 
15e50 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20         xRelease 
15e60 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62  xRelease, xRollb
15e70 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
15e80 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  o, IntPtr pClien
15e90 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  tData,..        
15ea0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
15eb0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  DestroyModule);.
15ec0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
15ed0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15ee0 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
15ef0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
15f00 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
15f10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f60 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
15f70 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73  Native Delegates
15f80 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
15f90 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
15fa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15fb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15fc0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15fd0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15fe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15ff0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16000 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16010 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16020 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
16030 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
16040 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16050 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
16060 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
16070 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
16080 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
16090 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
160a0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
160b0 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
160c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16110 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16120 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16130 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16140 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16150 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16170 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16180 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
16190 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
161a0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
161b0 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
161c0 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
161d0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
161e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
161f0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
16200 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
16210 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
16220 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
16230 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
16240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
16290 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
162a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
162b0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
162c0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
162d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
162e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
162f0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
16300 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16310 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
16320 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16330 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
16340 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b  r pIndex..    );
16350 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
163b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
163c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
163d0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
163e0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
163f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16400 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16410 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16420 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
16430 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
16440 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
16450 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
164b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
164c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
164d0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
164e0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
164f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16500 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16510 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16520 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16530 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
16540 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16550 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
16560 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16590 2f 2f 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 0d 0a 0d 0a  ////////////....
165b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
165c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
165d0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
165e0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
165f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16600 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16610 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
16620 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
16630 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
16640 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16650 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
16660 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
16670 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
166d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
166e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
166f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16700 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16710 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16720 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16730 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16740 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16750 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
16760 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
16770 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
16780 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167b0 2f 2f 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 0d 0a 0d 0a  ////////////....
167d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
167e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
167f0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
16800 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
16810 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16820 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16830 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
16840 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
16850 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
16860 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
16870 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
16880 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
16890 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
168a0 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  tr,..        int
168b0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
168c0 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
168d0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
168e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16920 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
16930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
16950 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
16960 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
16970 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16980 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
16990 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
169a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
169b0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49  Next(..        I
169c0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
169d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
169e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16a30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16a40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16a50 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
16a60 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16a70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16a80 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
16a90 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
16aa0 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
16ab0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
16ac0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
16ad0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16b20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16b30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16b40 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16b50 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16b60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16b70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16b80 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16b90 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
16ba0 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
16bb0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16bc0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
16bd0 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
16be0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
16bf0 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
16c00 20 20 20 20 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 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16c70 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16c80 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16c90 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16ca0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16cb0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16cc0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
16cd0 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
16ce0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16cf0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
16d00 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
16d10 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f  ////////////////
16d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
16d70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16d80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16d90 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16da0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16db0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16dc0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16dd0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16de0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
16df0 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
16e00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16e10 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
16e20 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
16e30 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
16e40 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
16e50 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
16e60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16eb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16ec0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16ed0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16ee0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16ef0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16f00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16f10 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16f20 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
16f30 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
16f40 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16f50 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
16f60 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16fd0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
16fe0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
16ff0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
17000 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
17010 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
17020 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
17030 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
17040 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
17050 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
17060 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
170c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
170d0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
170e0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
170f0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
17100 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
17110 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
17120 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
17130 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
17140 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
17150 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
17160 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17190 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
171c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
171d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
171e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
171f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17200 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17210 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17220 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
17230 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
17240 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49  back(..        I
17250 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
17260 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
172c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
172d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
172e0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
172f0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
17300 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17310 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
17320 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
17330 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
17340 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
17350 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
17360 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
17370 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
17380 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
17390 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
173a0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
173b0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73    ref IntPtr pUs
173c0 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a  erData..    );..
173d0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17420 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
17430 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17440 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
17450 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
17460 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
17470 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17480 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
17490 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
174a0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
174b0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
174c0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
174d0 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
174e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
17540 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17550 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17560 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
17570 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
17580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17590 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
175a0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
175b0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
175c0 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
175d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
175e0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
175f0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
17600 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
17660 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17670 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17680 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
17690 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
176a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
176b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
176c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
176d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
176e0 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
176f0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
17700 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
17710 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
17720 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
17780 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17790 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
177a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
177b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
177c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
177d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
177e0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
177f0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
17800 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
17810 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
17820 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
17830 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
17840 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17890 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
178a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
178b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
178c0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
178d0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
178e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
178f0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17900 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  c delegate void 
17910 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49  xDestroyModule(I
17920 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
17930 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  a);..#endif..   
17940 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
17950 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
179a0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
179b0 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d  tive Structures.
179c0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
179d0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
179e0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
179f0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
17a00 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
17a10 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
17a20 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  e3_module..    {
17a30 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17a40 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a   int iVersion;..
17a50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
17a60 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d  Create xCreate;.
17a70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17a80 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
17a90 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
17aa0 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  ic xBestIndex xB
17ab0 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  estIndex;..     
17ac0 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f     public xDisco
17ad0 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
17ae0 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
17af0 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
17b00 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70  troy;..        p
17b10 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65  ublic xOpen xOpe
17b20 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
17b30 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  ic xClose xClose
17b40 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
17b50 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  c xFilter xFilte
17b60 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  r;..        publ
17b70 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d  ic xNext xNext;.
17b80 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17b90 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20  xEof xEof;..    
17ba0 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75      public xColu
17bb0 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  mn xColumn;..   
17bc0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77       public xRow
17bd0 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20  Id xRowId;..    
17be0 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64 61      public xUpda
17bf0 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
17c00 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 67       public xBeg
17c10 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20  in xBegin;..    
17c20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63      public xSync
17c30 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20   xSync;..       
17c40 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20   public xCommit 
17c50 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20  xCommit;..      
17c60 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61    public xRollba
17c70 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20  ck xRollback;.. 
17c80 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
17c90 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
17ca0 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20  dFunction;..    
17cb0 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61      public xRena
17cc0 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20  me xRename;..   
17cd0 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68       /* The meth
17ce0 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e  ods above are in
17cf0 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68   version 1 of th
17d00 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
17d10 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a  ..         * obj
17d20 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f  ect.  Those belo
17d30 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f  w are for versio
17d40 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e  n 2 and greater.
17d50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
17d60 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78  lic xSavepoint x
17d70 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20  Savepoint;..    
17d80 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65      public xRele
17d90 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
17da0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
17db0 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
17dc0 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ackTo;..    }...
17dd0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e20 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
17e30 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
17e40 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
17e50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
17e60 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d  ct sqlite3_vtab.
17e70 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
17e80 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d  public IntPtr pM
17e90 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
17ea0 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b  public int nRef;
17eb0 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53   /* NO LONGER US
17ec0 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ED */..        p
17ed0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72  ublic IntPtr zEr
17ee0 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rMsg;..    }....
17ef0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17f40 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
17f50 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
17f60 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
17f70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
17f80 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  t sqlite3_vtab_c
17f90 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20  ursor..    {..  
17fa0 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
17fb0 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20  Ptr pVTab;..    
17fc0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
17fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
18020 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
18030 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
18040 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18050 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
18060 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d  ndex_constraint.
18070 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
18080 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
18090 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28  ndex_constraint(
180a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
180b0 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
180c0 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  int constraint..
180d0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
180e0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
180f0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
18100 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18110 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75  constraint != nu
18120 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18130 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18140 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f      iColumn = co
18150 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e  nstraint.iColumn
18160 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18170 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69     op = constrai
18180 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  nt.op;..        
18190 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d          usable =
181a0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62   constraint.usab
181b0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
181c0 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74       iTermOffset
181d0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54   = constraint.iT
181e0 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
181f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18200 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18250 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18260 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
18270 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
18280 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
18290 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f  exConstraintOp o
182a0 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  p;..        publ
182b0 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d  ic byte usable;.
182c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
182d0 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b  int iTermOffset;
182e0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18340 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
18350 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
18360 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
18370 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
18380 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
18390 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  by..    {..     
183a0 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
183b0 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28  3_index_orderby(
183c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
183d0 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
183e0 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20   orderBy..      
183f0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
18400 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
18410 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18420 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42        if (orderB
18430 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
18440 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18450 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75             iColu
18460 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f  mn = orderBy.iCo
18470 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
18480 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72         desc = or
18490 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20  derBy.desc;..   
184a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
184b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
184c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18510 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
18520 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d  Column; /* Colum
18530 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20  n number */..   
18540 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
18550 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65   desc;   /* True
18560 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
18570 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20  e for ASC. */.. 
18580 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
185e0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
185f0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
18600 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
18610 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
18620 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
18630 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d  nt_usage..    {.
18640 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18650 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
18660 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d  nstraint_usage(.
18670 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
18680 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
18690 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69  ntUsage constrai
186a0 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20  ntUsage..       
186b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
186c0 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
186d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
186e0 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
186f0 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c  intUsage != null
18700 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
18710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18720 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f    argvIndex = co
18730 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72  nstraintUsage.ar
18740 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  gvIndex;..      
18750 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d            omit =
18760 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
18770 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  .omit;..        
18780 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
18790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
187f0 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e  ublic int argvIn
18800 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63  dex; /* if >0, c
18810 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
18820 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
18830 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lter */..       
18840 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69   public byte omi
18850 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74  t;     /* Do not
18860 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
18870 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
18880 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
18890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
188e0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
188f0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
18900 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
18910 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
18920 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
18930 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  fo..    {..     
18940 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d     /* Inputs */.
18950 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18960 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  int nConstraint;
18970 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
18980 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72  tries in aConstr
18990 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
189a0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
189b0 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20  Constraint;..   
189c0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
189d0 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20  nOrderBy;..     
189e0 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
189f0 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20   aOrderBy;..    
18a00 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a      /* Outputs *
18a10 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
18a20 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
18a30 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20  aintUsage;..    
18a40 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
18a50 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20 20  dxNum;          
18a60 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20   /* Number used 
18a70 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  to identify the 
18a80 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20  index */..      
18a90 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
18aa0 69 64 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f  idxStr;        /
18ab0 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62  * String, possib
18ac0 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
18ad0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20   sqlite3_malloc 
18ae0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
18af0 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65  ic int needToFre
18b00 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65 65  eIdxStr; /* Free
18b10 20 69 64 78 53 74 72 20 75 73 69 6e 67 20 73 71   idxStr using sq
18b20 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 66 20  lite3_free() if 
18b30 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20  true */..       
18b40 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65   public int orde
18b50 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a  rByConsumed;  /*
18b60 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20   True if output 
18b70 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72  is already order
18b80 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
18b90 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74  ublic double est
18ba0 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45  imatedCost; /* E
18bb0 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66  stimated cost of
18bc0 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65   using this inde
18bd0 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e  x */..    }..#en
18be0 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
18bf0 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ion..  }....  //
18c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
18c50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
18c60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18c70 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
18c80 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
18c90 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
18ca0 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
18cb0 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
18cc0 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
18cd0 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
18ce0 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
18cf0 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
18d00 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
18d10 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
18d20 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
18d30 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
18d40 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
18d50 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
18d60 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
18d70 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
18d80 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
18d90 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
18da0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
18db0 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
18dc0 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
18dd0 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
18de0 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
18df0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
18e00 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
18e10 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
18e20 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
18e30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
18e40 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
18e50 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
18e60 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
18e70 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
18e80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
18e90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
18ea0 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
18eb0 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
18ec0 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
18ed0 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
18ee0 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
18ef0 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
18f00 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
18f10 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
18f20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
18f30 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
18f40 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
18f50 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
18f60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
18f70 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
18f80 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
18f90 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
18fa0 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
18fb0 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
18fc0 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
18fd0 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
18fe0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
18ff0 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
19000 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
19010 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
19020 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
19030 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
19040 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
19050 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
19060 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
19070 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
19080 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
19090 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
190a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
190b0 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
190c0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
190d0 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
190e0 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65    }....  }....#e
190f0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19140 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
19150 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
19160 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
19170 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
19180 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
19190 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
191a0 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
191b0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
191c0 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
191d0 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
191e0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
191f0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
19200 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
19210 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
19220 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
19230 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
19240 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19250 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
19260 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
19270 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
19280 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
19290 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
192a0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
192b0 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
192c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
192d0 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
192e0 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
192f0 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
19300 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
19310 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
19320 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
19330 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
19340 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
19390 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
193a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
193b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
193c0 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
193d0 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
193e0 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
193f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
19400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19440 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
19450 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  ate bool ownHand
19460 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
19470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
194c0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
194d0 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
194e0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
194f0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
19500 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  db)..        {..
19510 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19520 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  db != null)..   
19530 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
19540 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19550 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19560 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
19570 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  (db.syncRoot)..#
19580 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
19590 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
195a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
195b0 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d  turn db.handle;.
195c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
195d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
195e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
195f0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
19600 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
19610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
19670 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  rnal SQLiteConne
19680 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50  ctionHandle(IntP
19690 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48  tr db, bool ownH
196a0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
196b0 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61      : this(ownHa
196c0 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
196d0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
196e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
196f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
19700 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
19710 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
19720 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19730 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e       this.ownHan
19740 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b  dle = ownHandle;
19750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19760 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
19770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19780 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
19790 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
197e0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
197f0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
19800 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e  nHandle(bool own
19810 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
19820 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
19830 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
19840 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
19850 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
19860 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
19870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19880 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
19890 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 55 6e 73  ncrement(ref Uns
198a0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
198b0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
198c0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
198d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
198e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
198f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19920 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19930 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
19940 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
19950 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
19960 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
19970 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19980 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
19990 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
199a0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
199b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
199c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
199d0 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
199e0 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
199f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19a00 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
19a10 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
19a20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19a30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
19a40 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
19a50 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
19a60 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
19a70 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
19a80 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
19a90 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
19aa0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
19ab0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
19ac0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19ad0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
19ae0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
19af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b00 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
19b10 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
19b20 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
19b30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
19b40 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
19b50 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b70 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
19b80 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
19b90 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
19ba0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
19bb0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
19bc0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
19bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19be0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
19bf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19c00 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
19c10 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73  ce.WriteLine(Uns
19c20 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
19c30 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
19c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c50 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
19c60 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
19c70 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
19c80 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
19c90 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
19ca0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
19cb0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
19cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19cd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
19ce0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
19cf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
19d10 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
19d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d30 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
19d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19d50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19d60 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
19d70 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
19d80 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
19d90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19db0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
19dc0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
19dd0 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
19de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19df0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
19e00 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
19e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
19e30 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
19e40 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
19e50 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
19e60 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
19e70 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
19e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
19e90 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
19ea0 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
19eb0 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
19ec0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
19ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
19ee0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
19ef0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
19f00 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
19f10 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
19f20 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
19f30 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
19f40 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
19f50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
19f60 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
19f70 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
19f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19f90 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
19fa0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
19fb0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
19fc0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
19fd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ff0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1a000 65 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e(UnsafeNativeMe
1a010 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1a020 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1a030 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1a040 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1a050 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1a060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a070 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
1a080 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
1a090 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
1a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0b0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
1a0c0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0f0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1a100 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a110 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1a120 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1a130 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a140 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
1a150 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1a160 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a170 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1a180 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a190 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1a1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a1b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a1c0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1a1d0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
1a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a1f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
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 72 65 74 75 72 6e 20 66 61         return fa
1a220 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
1a230 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a240 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1a250 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a260 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a2b0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1a2c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a2d0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
1a2e0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a300 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
1a310 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1a320 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
1a330 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1a340 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
1a350 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1a360 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1a370 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a3c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
1a3d0 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20  l OwnHandle..   
1a3e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a3f0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1a400 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1a410 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a420 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1a430 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a440 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a460 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a470 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77         return ow
1a480 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
1a490 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a4a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a4b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1a4c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1a510 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1a520 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
1a530 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
1a540 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
1a550 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1a560 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a570 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1a590 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1a5a0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1a5b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a5d0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
1a5e0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a610 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1a620 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a670 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1a680 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1a690 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
1a6a0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
1a6b0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1a6c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a6d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1a6e0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1a6f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1a700 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a710 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
1a720 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
1a730 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a740 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1a750 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1a760 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a7c0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1a7d0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
1a7e0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
1a7f0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
1a800 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
1a810 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
1a820 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
1a830 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1a840 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
1a850 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
1a860 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
1a870 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1a880 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a890 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
1a8a0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
1a8b0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
1a8c0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
1a8d0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1a8e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a930 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
1a940 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1a950 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
1a960 20 20 20 20 20 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 2f 0d 0a 0d 0a  ////////////....
1a9b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1a9c0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
1a9d0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
1a9e0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
1a9f0 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
1aa00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1aa10 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
1aa20 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1aa30 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1aa40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1aa50 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1aa60 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
1aa70 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1aa80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1aaa0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1aab0 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
1aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1aad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1aae0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1aaf0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
1ab00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1ab10 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ab60 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
1ab70 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
1ab80 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
1ab90 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
1aba0 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
1abb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1abc0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
1abd0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1abe0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1abf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1ac00 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1ac10 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1ac20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ac30 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
1ac40 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
1ac50 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1ac60 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
1ac70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ac80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1ace0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
1acf0 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
1ad00 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
1ad10 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
1ad20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1ad30 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1ad40 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1ad50 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
1ad60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1ad70 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1ad80 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
1ad90 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
1ada0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1adb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1adc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1ae10 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1ae20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1ae30 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1ae40 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1ae50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1ae60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ae70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ae80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ae90 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1aea0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1aeb0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aed0 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1aee0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
1aef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1af00 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1af10 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af30 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
1af40 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
1af50 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
1af60 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
1af70 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1af80 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1af90 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1afb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1afc0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1afd0 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74  teLine(UnsafeNat
1afe0 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  iveMethods.Strin
1aff0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1b000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b010 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1b020 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1b030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b040 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1b050 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c  Statement: {0}",
1b060 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
1b070 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1b080 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b0a0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1b0b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b0c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1b0d0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
1b0e0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1b0f0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
1b100 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b120 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
1b130 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b150 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1b170 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
1b180 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
1b190 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
1b1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b1b0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
1b1c0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1b1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b1e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1b1f0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
1b200 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1b210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b220 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1b230 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1b240 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b250 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b260 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1b270 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
1b280 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1b290 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1b2a0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1b2b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1b2c0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1b2d0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1b2e0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
1b2f0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1b300 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
1b310 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1b320 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1b330 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
1b340 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1b350 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1b360 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1b370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b380 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1b390 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1b3b0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e  ace.WriteLine(Un
1b3c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b3d0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1b3e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b3f0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1b400 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1b410 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1b430 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1b440 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1b450 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1b480 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1b490 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1b4b0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1b4c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b4d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1b4e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1b4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1b500 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1b510 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1b520 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b530 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1b540 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1b550 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1b560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b580 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1b590 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1b5a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1b5b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1b5c0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1b5d0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1b5e0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1b5f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1b600 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1b610 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b620 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1b670 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1b680 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1b690 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1b6a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1b6b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1b6c0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1b6d0 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1b6e0 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
1b6f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1b700 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
1b710 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
1b720 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b780 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1b790 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
1b7a0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
1b7b0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
1b7c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1b7d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1b7e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1b800 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1b810 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1b820 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b830 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b840 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
1b850 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b870 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b880 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b890 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b8e0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1b8f0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1b900 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
1b910 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
1b920 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1b930 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b940 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1b950 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1b960 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1b970 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b980 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
1b990 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
1b9a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b9b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b9c0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1b9d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ba30 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
1ba40 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
1ba50 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
1ba60 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
1ba70 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
1ba80 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
1ba90 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
1baa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1bab0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
1bac0 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
1bad0 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1bae0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1baf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1bb00 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
1bb10 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
1bb20 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
1bb30 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
1bb40 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1bba0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1bbb0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1bbc0 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
1bbd0 20 20 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
1bc20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1bc30 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1bc40 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1bc50 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
1bc60 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
1bc70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1bc80 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
1bc90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1bca0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1bcb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bcc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bcd0 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
1bce0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1bcf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bd00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bd10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1bd20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
1bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1bd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1bd60 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
1bd70 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1bd80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1bdd0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
1bde0 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
1bdf0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
1be00 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1be10 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
1be20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1be30 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
1be40 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1be50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1be60 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1be70 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1be80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1be90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bea0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
1beb0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
1bec0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1bed0 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
1bee0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1bef0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1bf50 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1bf60 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
1bf70 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
1bf80 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
1bf90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bfa0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1bfb0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1bfc0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
1bfd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1bfe0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1bff0 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
1c000 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
1c010 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1c020 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c070 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
1c080 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
1c090 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1c0a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1c0b0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1c0c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1c0d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c0e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1c100 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
1c110 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
1c120 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
1c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c140 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
1c150 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
1c160 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1c170 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
1c180 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1c190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1a0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
1c1b0 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63  hBackup(cnn, loc
1c1c0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
1c1d0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1c1e0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1c1f0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1c200 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1c210 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1c230 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55  race.WriteLine(U
1c240 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1c250 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1c260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c270 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1c280 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1c290 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1c2b0 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
1c2c0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
1c2d0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1c2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1c300 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1c310 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c320 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c330 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
1c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1c350 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c370 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c380 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
1c390 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1c3a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1c3b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3d0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1c3e0 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68  ishBackup(cnn, h
1c3f0 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
1c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c410 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
1c420 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c450 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
1c460 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1c470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1c480 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1c490 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1c4a0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1c4b0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1c4c0 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
1c4d0 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
1c4e0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1c4f0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1c500 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1c510 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
1c520 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1c530 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1c540 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1c550 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1c560 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1c570 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1c580 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
1c590 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c5a0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1c5b0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1c5c0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1c5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1c5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c5f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c600 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1c610 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e  riteLine(UnsafeN
1c620 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
1c630 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1c640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c650 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1c660 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1c670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c680 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
1c690 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
1c6a0 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
1c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6c0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
1c6d0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1c6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c6f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c700 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1c710 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1c720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c730 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c740 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c750 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
1c760 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1c770 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c780 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1c790 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1c7a0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1c7b0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1c7c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c7d0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1c7e0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
1c7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c800 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c810 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
1c820 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1c830 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
1c840 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1c850 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1c860 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1c870 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1c880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c8c0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
1c8d0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
1c8e0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
1c8f0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
1c900 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c910 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
1c920 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
1c930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1c940 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1c950 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
1c960 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1c970 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1c980 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c9d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1c9e0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
1c9f0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
1ca00 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1ca10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1ca20 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1ca30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca50 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1ca60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1ca70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca90 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
1caa0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
1cab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cac0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1cad0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1cae0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1cb30 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
1cb40 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1cb50 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
1cb60 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
1cb70 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1cb80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cb90 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1cba0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1cbb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1cbc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1cbd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
1cbe0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
1cbf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1cc00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1cc10 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
1cc20 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..