System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6e065f7dbe083e7594467afbe59936ffd4498fb2:


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 43 6f 6d 62 69  .      /// Combi
2860: 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74 72  nes two path str
2870: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
2880: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2890: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28a0: 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20  me="path1">..   
28b0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74     /// The first
28c0: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
28d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
28e0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
28f0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
2900: 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h2">..      /// 
2910: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20  The second path 
2920: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
2930: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2940: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2950: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
2960: 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68  he combined path
2970: 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c   string -OR- nul
2980: 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65  l if both of the
2990: 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a   original path..
29a0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
29b0: 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  s are null...   
29c0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
29d0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
29e0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d   static string M
29f0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
2a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
2a10: 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20  ng path1,..     
2a20: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
2a30: 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  2..          )..
2a40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a50: 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d 20     if (path1 != 
2a60: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2a70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a80: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
2a90: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2aa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
2ab0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68  ath.Combine(path
2ac0: 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20  1, path2);..    
2ad0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
2ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af0: 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d    return path1;.
2b00: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
2b10: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2b20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b30: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
2b40: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b60: 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20  eturn path2;..  
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b90: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
2ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
2bb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20  /////////..     
2c10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2c20: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
2c30: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
2c40: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
2c50: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ion file name fo
2c60: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a  r the assembly..
2c70: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
2c80: 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64  ning the managed
2c90: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
2ca0: 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d  ite components..
2cb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2cc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2cd0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2ce0: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
2cf0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
2d00: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
2d10: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
2d20: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
2d30: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
2d40: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
2d50: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2d60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2d70: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 58  atic string GetX
2d80: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
2d90: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
2da0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
2db0: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
2dc0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2dd0: 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ame;....#if !PLA
2de0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2df0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2e00: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70    directory = Ap
2e10: 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
2e20: 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
2e30: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
2e40: 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65  fileName = Maybe
2e50: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
2e60: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
2e70: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
2e80: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
2e90: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
2ea0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2eb0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
2ec0: 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
2ed0: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
2ee0: 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
2ef0: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
2f00: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
2f10: 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
2f20: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d  th(directory, Xm
2f30: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
2f40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
2f50: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
2f60: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
2f70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f80: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  fileName;....   
2f90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
2fa0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ll;..      }....
2fb0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3000: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3010: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3020: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
3030: 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66  rns the value of
3040: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
3050: 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68  etting, using th
3060: 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f  e XML..      ///
3070: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
3080: 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65  ile and/or the e
3090: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
30a0: 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63 75 72  bles for the cur
30b0: 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rent..      /// 
30c0: 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74  process and/or t
30d0: 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74 65  he current syste
30e0: 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c  m, when availabl
30f0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
3100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
3130: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
3140: 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20  he setting...   
3150: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3160: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3170: 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  m name="default"
3180: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
3190: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
31a0: 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65 74  urned if the set
31b0: 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65  ting has not bee
31c0: 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
31d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63  ..      /// or c
31e0: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
31f0: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
3200: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
3210: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3220: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
3230: 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  ue of the settin
3240: 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75  g -OR- the defau
3250: 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69  lt value specifi
3260: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed by..      ///
3270: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
3280: 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20  "default" /> if 
3290: 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  it has not been 
32a0: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f  set explicitly o
32b0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  r..      /// can
32c0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
32d0: 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  d.  By default, 
32e0: 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74  all references t
32f0: 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20  o existing..    
3300: 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e    /// environmen
3310: 74 20 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c  t variables will
3320: 20 62 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20   be expanded to 
3330: 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64  their correspond
3340: 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  ing values..    
3350: 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65    /// within the
3360: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
3370: 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74  urned unless eit
3380: 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61  her the "No_Expa
3390: 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  nd" or..      //
33a0: 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61  / "No_Expand_<pa
33b0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d  ramref name="nam
33c0: 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65  e" />" environme
33d0: 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73  nt variable is s
33e0: 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  et [to..      //
33f0: 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20  / anything]...  
3400: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
3410: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
3420: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
3430: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
3440: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
3450: 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20  ing name,    /* 
3460: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
3470: 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
3480: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
3490: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
34a0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e  .          if (n
34b0: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
34d0: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a  rn @default;....
34e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3530: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  ...          #re
3540: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
3550: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
3560: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
3570: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3580: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
35a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35b0: 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20  // NOTE: Update 
35c0: 73 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74  statistics for t
35d0: 68 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75  his setting valu
35e0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
35f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3600: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
3610: 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c  eadCounts != nul
3620: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3630: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3640: 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74         int count
3650: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3660: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
3670: 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79  ngReadCounts.Try
3680: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f  GetValue(name, o
3690: 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20  ut count))..    
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b0: 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75    settingReadCou
36c0: 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e  nts[name] = coun
36d0: 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20  t + 1;..        
36e0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3700: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
3710: 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65  dCounts.Add(name
3720: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
3730: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3740: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
3750: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
3760: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
3770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
37c0: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d    string value =
37d0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50   null;....#if !P
37e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
37f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
3800: 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20      bool expand 
3810: 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
3820: 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e       if (Environ
3830: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
3840: 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f  entVariable("No_
3850: 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c  Expand") != null
3860: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
3880: 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  pand = false;.. 
3890: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
38a0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 45        else if (E
38b0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
38c0: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
38d0: 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  e(StringFormat(.
38e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
38f0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49     CultureInfo.I
3900: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
3910: 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22   "No_Expand_{0}"
3920: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3930: 20 20 20 20 20 6e 61 6d 65 29 29 20 21 3d 20 6e       name)) != n
3940: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3950: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3960: 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
3970: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3980: 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65  .          value
3990: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47   = Environment.G
39a0: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
39b0: 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a  iable(name);....
39c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
39d0: 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e 67 2e  pand && !String.
39e0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
39f0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
3a00: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
3a10: 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45  ironment.ExpandE
3a20: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
3a30: 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  les(value);.... 
3a40: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
3a50: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
3a60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3a70: 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6e 64 69 66  n value;..#endif
3a80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72  ....          tr
3a90: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
3aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
3ab0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
3ac0: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
3ad0: 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Name();....     
3ae0: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
3af0: 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eName == null)..
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b10: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
3b20: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
3b30: 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20      XmlDocument 
3b40: 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20 58  document = new X
3b50: 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d  mlDocument();...
3b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
3b70: 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69 6c  ocument.Load(fil
3b80: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
3b90: 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d           XmlElem
3ba0: 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f  ent element = do
3bb0: 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e  cument.SelectSin
3bc0: 67 6c 65 4e 6f 64 65 28 53 74 72 69 6e 67 46 6f  gleNode(StringFo
3bd0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
3be0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
3bf0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
3c00: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
3c10: 20 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e 66            "/conf
3c20: 69 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65 74  iguration/appSet
3c30: 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27  tings/add[@key='
3c40: 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61  {0}']", name)) a
3c50: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
3c60: 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b       XmlElement;
3c70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3c80: 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d    if (element !=
3c90: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3ca0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3cb0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
3cc0: 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62  lement.HasAttrib
3cd0: 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20  ute("value")).. 
3ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cf0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65       value = ele
3d00: 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74  ment.GetAttribut
3d10: 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 23  e("value");....#
3d20: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
3d30: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d50: 20 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21   if (expand && !
3d60: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
3d70: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
3d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d90: 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69      value = Envi
3da0: 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e  ronment.ExpandEn
3db0: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
3dc0: 65 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  es(value);..#end
3dd0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
3de0: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
3df0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e10: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
3e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
3e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
3e40: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
3e50: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
3e60: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
3e70: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3e80: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3e90: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
3ea0: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
3eb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
3ec0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
3ed0: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
3ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
3ef0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
3f00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3f10: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
3f20: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72  teLine(StringFor
3f30: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
3f50: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
3f60: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
3f80: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
3f90: 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64  re-loader failed
3fa0: 20 74 6f 20 67 65 74 20 73 65 74 74 69 6e 67 20   to get setting 
3fb0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
3fc0: 20 20 20 20 20 20 20 20 20 20 20 22 5c 22 7b 30             "\"{0
3fd0: 7d 5c 22 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  }\" value: {1}",
3fe0: 20 6e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74   name, e)); /* t
3ff0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
4000: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4010: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4040: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
4050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4060: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
4070: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4080: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
4090: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ult;..      }...
40a0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
40b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
4100: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4110: 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  RK..      privat
4120: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
4130: 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69  ListToString(ILi
4140: 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29  st<string> list)
4150: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
4160: 20 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d       if (list ==
4170: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
4180: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
4190: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
41a0: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65  StringBuilder re
41b0: 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e  sult = new Strin
41c0: 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20  gBuilder();.... 
41d0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
41e0: 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74   (string element
41f0: 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20   in list)..     
4200: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4210: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
4220: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
4240: 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
4250: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
4260: 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
4270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4280: 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
4290: 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (' ');....      
42a0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
42b0: 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d  ppend(element);.
42c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
42d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
42e0: 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
42f0: 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ();..      }....
4300: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4350: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
4360: 20 73 74 61 74 69 63 20 69 6e 74 20 43 68 65 63   static int Chec
4370: 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
4380: 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a  sAndPlatforms(..
4390: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
43a0: 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
43b0: 20 20 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c         ref List<
43c0: 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d  string> matches.
43d0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
43e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
43f0: 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b   int result = 0;
4400: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
4410: 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c   (matches == nul
4420: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4430: 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20    matches = new 
4440: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
4450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
4460: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
4470: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
4480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
4490: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
44a0: 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
44b0: 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ry) &&..        
44c0: 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65            (proce
44d0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
44e0: 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c  Platforms != nul
44f0: 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
4500: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4510: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
4520: 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74  (KeyValuePair<st
4530: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61  ring, string> pa
4540: 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
4550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4560: 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  in processorArch
4570: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
4580: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
4590: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
45a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
45b0: 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69  f (Directory.Exi
45c0: 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  sts(MaybeCombine
45d0: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
45e0: 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4620: 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
4630: 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4650: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
4660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4670: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
4690: 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
46a0: 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46c0: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
46d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
46e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46f0: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
4700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4710: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
4720: 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
4730: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
4740: 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20  ry, value)))..  
4750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4760: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4780: 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c   matches.Add(val
4790: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
47a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47b0: 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
47e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
47f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4800: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4810: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
4820: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
4830: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
4840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
4880: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
4890: 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b  tatic bool Check
48a0: 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
48b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  (..          Ass
48c0: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d  embly assembly,.
48d0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
48e0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
48f0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
4900: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4910: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
4920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4930: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20  if (assembly == 
4940: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
4950: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4960: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
4970: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
4980: 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62  odeBase = assemb
4990: 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a  ly.CodeBase;....
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
49b0: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
49c0: 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29  rEmpty(codeBase)
49d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
49e0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
49f0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
4a00: 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65      Uri uri = ne
4a10: 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b  w Uri(codeBase);
4a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4a30: 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65  string localFile
4a40: 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c  Name = uri.Local
4a50: 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Path;....       
4a60: 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
4a70: 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c  .Exists(localFil
4a80: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
4a90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4aa0: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
4ab0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
4ac0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
4ad0: 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
4ae0: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
4af0: 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65         localFile
4b00: 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
4b10: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
4b20: 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f      string xmlCo
4b30: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d  nfigFileName = M
4b40: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
4b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4b60: 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58      directory, X
4b70: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
4b80: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
4b90: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
4ba0: 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  sts(xmlConfigFil
4bb0: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
4bc0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
4bd0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
4be0: 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
4bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4c00: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4c10: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c30: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
4c40: 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74  ine(StringFormat
4c50: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
4c70: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
4c80: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
4cb0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
4cc0: 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ound XML configu
4cd0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d  ration file " +.
4ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4cf0: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
4d00: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
4d10: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
4d20: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
4d30: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d50: 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
4d60: 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
4d70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4d80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4d90: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
4da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4db0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
4dd0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4df0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
4e10: 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
4e20: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
4e30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4e40: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
4e50: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4e60: 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74           List<st
4e70: 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20  ring> matches = 
4e80: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4e90: 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b         if (Check
4ea0: 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
4eb0: 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72  AndPlatforms(dir
4ec0: 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63  ectory, ref matc
4ed0: 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20  hes) > 0)..     
4ee0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
4ef0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
4f00: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
4f10: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
4f20: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
4f60: 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d  eLine(StringForm
4f70: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
4f90: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
4fa0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
4fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fc0: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
4fd0: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
4fe0: 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75   found native su
4ff0: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 22 20  b-directories " 
5000: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69               "vi
5020: 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20  a code base for 
5030: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
5040: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22  ing assembly: \"
5050: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
5060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5070: 20 20 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28     ListToString(
5080: 6d 61 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74  matches))); /* t
5090: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
50a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
50d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
5100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5110: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
5120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5130: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
5140: 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
5150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5160: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
5170: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
5180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
5190: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
51a0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
51b0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
51c0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
51d0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
51e0: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
51f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
5200: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
5210: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
5220: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
5230: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
5240: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
5250: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
5270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5280: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
5290: 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ne(StringFormat(
52a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
52b0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
52c0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
52d0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
52e0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
52f0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
5300: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
5310: 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20  check code base 
5320: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
5330: 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20             "for 
5340: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
5350: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30  ing assembly: {0
5360: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
5370: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
5380: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5390: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
53a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
53c0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
53d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
53e0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
53f0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
5400: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
5410: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
5420: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5470: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5480: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5490: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
54a0: 65 74 75 72 6e 73 20 74 68 65 20 64 69 72 65 63  eturns the direc
54b0: 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73  tory for the ass
54c0: 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
54d0: 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  being..      ///
54e0: 20 65 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20   executed...    
54f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
5510: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
5520: 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 66   The directory f
5530: 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  or the assembly 
5540: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
5550: 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75  executed -OR- nu
5560: 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll if..      ///
5570: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
5580: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
5590: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
55a0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
55b0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
55c0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
55d0: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
55e0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
55f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5600: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
5610: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
5620: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
5630: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a  gAssembly();....
5640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5650: 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75   (assembly == nu
5660: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5670: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
5680: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
5690: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
56a0: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
56b0: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
56c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
56e0: 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62  emblyName assemb
56f0: 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  lyName = assembl
5700: 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a  y.GetName();....
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5720: 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d   (assemblyName =
5730: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
5740: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5750: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
5760: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
5770: 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  e = assemblyName
5780: 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73  .CodeBase;..#els
5790: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
57a0: 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d   if (!CheckAssem
57b0: 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65  blyCodeBase(asse
57c0: 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61  mbly, ref fileNa
57d0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
57e0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
57f0: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
5800: 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
5810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
5820: 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
5830: 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
5840: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
5850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
5860: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
5870: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
5880: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
5890: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c  irectoryName(fil
58a0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
58b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
58c0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
58d0: 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20  y(directory)).. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58f0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
5900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
5910: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
5920: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
5930: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5940: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
5950: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
5960: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
5970: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
5980: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
5990: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
59a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
59b0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
59c0: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
59d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
59e0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
59f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5a00: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
5a10: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72  teLine(StringFor
5a20: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
5a30: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
5a40: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
5a50: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
5a70: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
5a80: 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64  re-loader failed
5a90: 20 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72   to get director
5aa0: 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f               "fo
5ac0: 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
5ad0: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
5ae0: 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
5af0: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
5b00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5b10: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
5b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
5b60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
5b70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
5b80: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
5b90: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
5ba0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5bb0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
5c00: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
5c10: 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
5c20: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
5c30: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
5c40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5c50: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
5c60: 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
5c70: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
5c80: 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
5c90: 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
5ca0: 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
5cb0: 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
5cc0: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
5cd0: 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
5ce0: 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
5cf0: 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
5d00: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
5d10: 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
5d20: 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
5d30: 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
5d40: 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
5d50: 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
5d60: 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
5d70: 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
5d80: 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
5d90: 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
5da0: 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
5db0: 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
5dc0: 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
5dd0: 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
5de0: 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
5df0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
5e00: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
5e10: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
5e20: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
5e30: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5e40: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
5e50: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
5e60: 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
5e70: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
5e80: 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
5e90: 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
5ea0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
5eb0: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
5ec0: 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
5ed0: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
5ee0: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
5ef0: 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ARY..      /// <
5f00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5f10: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
5f20: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
5f30: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
5f40: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
5f50: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
5f60: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
5f70: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
5f80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
5f90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
5fa0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
5fb0: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
5fc0: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
5fd0: 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
5fe0: 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
5ff0: 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20  HITECTURE";.... 
6000: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6050: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6060: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
6070: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
6080: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
6090: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
60a0: 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61   Win32 LoadLibra
60b0: 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  ry..      /// fu
60c0: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
60d0: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
60e0: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
60f0: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
6100: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
6110: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
6120: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6130: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
6140: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
6150: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
6160: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
6170: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
6180: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6190: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
61a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
61b0: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
61c0: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
61d0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
61e0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
61f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
6200: 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54  urns>..#if !PLAT
6210: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6220: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c  EWORK..      [Dl
6230: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
6240: 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  2",..#else..    
6250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
6260: 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  redll",..#endif.
6270: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
6280: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6290: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
62a0: 2e 57 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74  .Winapi, CharSet
62b0: 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c   = CharSet.Auto,
62c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
62d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
62e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73 74  ..          Best
62f0: 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c  FitMapping = fal
6300: 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70  se, ThrowOnUnmap
6310: 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65  pableChar = true
6320: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
6330: 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f       SetLastErro
6340: 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20  r = true)]..    
6350: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
6360: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c   extern IntPtr L
6370: 6f 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e  oadLibrary(strin
6380: 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  g fileName);....
6390: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
63a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
63e0: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
63f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6400: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6410: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6420: 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49   This is the P/I
6430: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61  nvoke method tha
6440: 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69  t wraps the nati
6450: 76 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74  ve Win32 GetSyst
6460: 65 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f  emInfo..      //
6470: 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65  / function.  See
6480: 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65   the MSDN docume
6490: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c  ntation for full
64a0: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
64b0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64   it..      /// d
64c0: 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oes...      /// 
64d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
64e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
64f0: 65 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d  e="systemInfo">.
6500: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
6510: 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
6520: 6e 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62  n structure to b
6530: 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74  e filled in by t
6540: 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  he function...  
6550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6560: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
6570: 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61  rt("coredll", Ca
6580: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6590: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
65a0: 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20  ion.Winapi)]..  
65b0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
65c0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
65d0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
65e0: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
65f0: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
6600: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
6650: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6660: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
6670: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
6680: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
6690: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
66a0: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
66b0: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
66c0: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
66d0: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
66e0: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
66f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6700: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
6710: 76 61 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73  vate enum Proces
6720: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
6730: 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50  : ushort /* COMP
6740: 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20  AT: Win32. */.. 
6750: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6760: 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20    Intel = 0,..  
6770: 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31          MIPS = 1
6780: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70  ,..          Alp
6790: 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20  ha = 2,..       
67a0: 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d     PowerPC = 3,.
67b0: 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d  .          SHx =
67c0: 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   4,..          A
67d0: 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20  RM = 5,..       
67e0: 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20     IA64 = 6,..  
67f0: 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20          Alpha64 
6800: 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 7,..          
6810: 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20  MSIL = 8,..     
6820: 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d       AMD64 = 9,.
6830: 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f  .          IA32_
6840: 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a  on_Win64 = 10,..
6850: 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77            Unknow
6860: 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20  n = 0xFFFF..    
6870: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68c0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
68d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
68e0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
68f0: 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69  cture contains i
6900: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
6910: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d   the current com
6920: 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20  puter. This..   
6930: 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20     /// includes 
6940: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79  the processor ty
6950: 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d  pe, page size, m
6960: 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c  emory addresses,
6970: 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   etc...      ///
6980: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6990: 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
69a0: 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
69b0: 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20  ential)]..      
69c0: 70 72 69 76 61 74 65 20 73 74 72 75 63 74 20 53  private struct S
69d0: 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20  YSTEM_INFO..    
69e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70    {..          p
69f0: 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41  ublic ProcessorA
6a00: 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f  rchitecture wPro
6a10: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
6a20: 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70  re;..          p
6a30: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65  ublic ushort wRe
6a40: 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55  served; /* NOT U
6a50: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
6a60: 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77    public uint dw
6a70: 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54  PageSize; /* NOT
6a80: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
6a90: 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
6aa0: 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69  r lpMinimumAppli
6ab0: 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f  cationAddress; /
6ac0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
6ad0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
6ae0: 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d  IntPtr lpMaximum
6af0: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
6b00: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
6b10: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
6b20: 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69  blic uint dwActi
6b30: 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b  veProcessorMask;
6b40: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
6b50: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
6b60: 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f  c uint dwNumberO
6b70: 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20  fProcessors; /* 
6b80: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
6b90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
6ba0: 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79  nt dwProcessorTy
6bb0: 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  pe; /* NOT USED 
6bc0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
6bd0: 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f  blic uint dwAllo
6be0: 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74  cationGranularit
6bf0: 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  y; /* NOT USED *
6c00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
6c10: 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63  lic ushort wProc
6c20: 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e  essorLevel; /* N
6c30: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
6c40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68        public ush
6c50: 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65  ort wProcessorRe
6c60: 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55  vision; /* NOT U
6c70: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  SED */..      }.
6c80: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
6c90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6ce0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
6cf0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
6d00: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6d10: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
6d20: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
6d30: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
6d40: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
6d50: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
6d60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6d70: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
6d80: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f   static string _
6d90: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
6da0: 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c  leFileName = nul
6db0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  l;....      ////
6dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e00: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6e10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6e20: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
6e30: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
6e40: 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
6e50: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
6e60: 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  the value..     
6e70: 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f   /// IntPtr.Zero
6e80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6e90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
6ea0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
6eb0: 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69  tPtr _SQLiteNati
6ec0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
6ed0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
6ee0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
6ef0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
6f50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6f60: 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72 20  // Searches for 
6f70: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
6f80: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65  e library in the
6f90: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
6fa0: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  ining..      ///
6fb0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
6fc0: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
6fd0: 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61  ecuted as well a
6fe0: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
6ff0: 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tory..      /// 
7000: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
7010: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
7020: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
7030: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7040: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7050: 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22  ="baseDirectory"
7060: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  >..      /// Upo
7070: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
7080: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
7090: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65  e modified to re
70a0: 66 65 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d  fer to the base.
70b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
70c0: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
70d0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
70e0: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
70f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7100: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
7110: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
7120: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
7130: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
7140: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
7150: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
7160: 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
7170: 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20   to the name..  
7180: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69      /// of the i
7190: 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63 74 6f  mmediate directo
71a0: 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66  ry (i.e. the off
71b0: 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
71c0: 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20  e directory)..  
71d0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69      /// containi
71e0: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
71f0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
7200: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7210: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
7220: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
7230: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63  / Non-zero (succ
7240: 65 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69  ess) if the nati
7250: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
7260: 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68  y was found; oth
7270: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
7280: 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65  // zero (failure
7290: 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  )...      /// </
72a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
72b0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
72c0: 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72  ool SearchForDir
72d0: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
72e0: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61     ref string ba
72f0: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
7300: 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
7310: 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
7320: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
7330: 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74  hitecture /* out
7340: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
7350: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7360: 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74       if (GetSett
7370: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
7380: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
7390: 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72  oadSQLite_NoSear
73a0: 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c  chForDirectory",
73b0: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
73c0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
73d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
73e0: 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53  rn false; /* DIS
73f0: 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  ABLED */..      
7400: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7410: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7420: 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20   // NOTE: Build 
7430: 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73 65  the list of base
7440: 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64   directories and
7450: 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66   processor/platf
7460: 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  orm..          /
7470: 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20 20  /       names.  
7480: 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c 6c  These lists will
7490: 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70   be used to help
74a0: 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74 69   locate the nati
74b0: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ve..          //
74c0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63 6f         SQLite co
74d0: 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20 69  re library (or i
74e0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29  nterop assembly)
74f0: 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74   to pre-load int
7500: 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  o..          // 
7510: 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63 65        this proce
7520: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ss...          /
7530: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
7540: 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69 65  ing[] directorie
7550: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  s = {..         
7560: 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79       GetAssembly
7570: 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69  Directory(),..#i
7580: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7590: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
75a0: 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70 44              AppD
75b0: 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d  omain.CurrentDom
75c0: 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72  ain.BaseDirector
75d0: 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  y,..#endif..    
75e0: 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20        };....    
75f0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73        string[] s
7600: 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ubDirectories = 
7610: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7620: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
7630: 68 69 74 65 63 74 75 72 65 28 29 2c 20 47 65 74  hitecture(), Get
7640: 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c  PlatformName(nul
7650: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b  l)..          };
7660: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f  ....          fo
7670: 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69  reach (string di
7680: 72 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63  rectory in direc
7690: 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
76a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
76b0: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
76c0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
76d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
76e0: 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
76f0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
7700: 20 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65   (string subDire
7710: 63 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65  ctory in subDire
7720: 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20  ctories)..      
7730: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7740: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7750: 28 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d  (subDirectory ==
7760: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
7770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
7780: 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
7790: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
77a0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46  ing fileName = F
77b0: 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
77c0: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
77d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
77e0: 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f           MaybeCo
77f0: 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74  mbinePath(direct
7800: 6f 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72  ory, subDirector
7810: 79 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29  y), SQLITE_DLL))
7820: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
7830: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7840: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
7850: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c  NOTE: If the SQL
7860: 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69  ite DLL file exi
7870: 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63  sts, return succ
7880: 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
7890: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
78a0: 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e   Prior to return
78b0: 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73  ing, set the bas
78c0: 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d  e directory and.
78d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
78e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
78f0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
7900: 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68  re to reflect th
7910: 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20  e location..    
7920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7930: 20 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20         where it 
7940: 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20  was found...    
7950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7970: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
7980: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
7990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
79b0: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
79c0: 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63  irectory = direc
79d0: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
79e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
79f0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7a00: 72 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72  re = subDirector
7a10: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
7a20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7a30: 20 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20   true; /* FOUND 
7a40: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
7a50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7a60: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7a70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7a80: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
7a90: 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f   /* NOT FOUND */
7aa0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
7ab0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
7b00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7b10: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
7b20: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
7b30: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
7b40: 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  ory of the curre
7b50: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  nt application..
7b60: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e        /// domain
7b70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7b80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7b90: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7ba0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
7bb0: 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
7bc0: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
7bd0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f  cation domain -O
7be0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20  R- null if it.. 
7bf0: 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
7c00: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
7c10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
7c20: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
7c30: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
7c40: 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f  g GetBaseDirecto
7c50: 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ry()..      {.. 
7c60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7c70: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
7c80: 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
7c90: 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
7ca0: 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ory" environment
7cb0: 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20   variable..     
7cc0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
7cd0: 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72   set, use it ver
7ce0: 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61  batim for the ba
7cf0: 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
7d00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7d10: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
7d20: 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74  rectory = GetSet
7d30: 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f  tingValue("PreLo
7d40: 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72  adSQLite_BaseDir
7d50: 65 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20  ectory",..      
7d60: 20 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a          null);..
7d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7d80: 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  directory != nul
7d90: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
7da0: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
7db0: 72 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ry;....#if !PLAT
7dc0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7dd0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
7de0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
7df0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
7e00: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73  PreLoadSQLite_Us
7e10: 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  eAssemblyDirecto
7e20: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ry" environment.
7e30: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7e40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
7e50: 73 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67  set (to anything
7e60: 29 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20  ), then attempt 
7e70: 74 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20  to use the..    
7e80: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
7e90: 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
7ea0: 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c  ing the currentl
7eb0: 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
7ec0: 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  mbly..          
7ed0: 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53  //       (i.e. S
7ee0: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
7ef0: 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68  e) intsead of th
7f00: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  e application.. 
7f10: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
7f20: 20 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69    domain base di
7f30: 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
7f40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7f50: 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
7f60: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
7f70: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
7f80: 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65  adSQLite_UseAsse
7f90: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20  mblyDirectory", 
7fa0: 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  null) != null)..
7fb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7fc0: 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
7fd0: 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62  tory = GetAssemb
7fe0: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
7ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8000: 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d  if (directory !=
8010: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
8020: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8030: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
8040: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8050: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8060: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
8070: 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b  erwise, fallback
8080: 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61   on using the ba
8090: 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
80a0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
80b0: 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20  /       current 
80c0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
80d0: 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  in...          /
80e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
80f0: 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  urn AppDomain.Cu
8100: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
8110: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73  Directory;..#els
8120: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  e..          //.
8130: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
8140: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
8150: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
8160: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
8170: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
8180: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
8190: 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  e currently exec
81a0: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d  uting assembly..
81b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
81c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
81d0: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
81e0: 74 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory();..#endif.
81f0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
8200: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
8250: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8260: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
8270: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79  rmines if the dy
8280: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
8290: 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71  ry file name req
82a0: 75 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a  uires a suffix..
82b0: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64        /// and ad
82c0: 64 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61  ds it if necessa
82d0: 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
82e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
82f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8300: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
8310: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
8320: 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e  inal dynamic lin
8330: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
8340: 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  ame to inspect..
8350: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
8360: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
8370: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8380: 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20  /// The dynamic 
8390: 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
83a0: 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79  e name, possibly
83b0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63   modified to inc
83c0: 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f  lude an..      /
83d0: 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20  // extension... 
83e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
83f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
8400: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
8410: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
8420: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
8430: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a  ring fileName /*
8440: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
8450: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
8460: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
8470: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
8480: 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  y(fileName))..  
8490: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
84a0: 20 20 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72           Platfor
84b0: 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d  mID platformId =
84c0: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56   Environment.OSV
84d0: 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b  ersion.Platform;
84e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
84f0: 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49    if ((platformI
8500: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
8510: 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20  Win32S) ||..    
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
8530: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
8540: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e  tformID.Win32Win
8550: 64 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20  dows) ||..      
8560: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
8570: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
8580: 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c  ormID.Win32NT) |
8590: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
85a0: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
85b0: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
85c0: 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20  inCE))..        
85d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
85e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
85f0: 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74  fileName.EndsWit
8600: 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  h(DllFileExtensi
8610: 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
8630: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
8640: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
8650: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
8660: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20  return fileName 
8690: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
86a0: 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
86b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
86c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
86d0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
86e0: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
86f0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ame;..      }...
8700: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8720: 2f 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8760: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8770: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
8780: 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73  urns the process
8790: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
87a0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  of the current..
87b0: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
87c0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
87d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
87e0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
87f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
8800: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
8810: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
8820: 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20  nt process -OR- 
8830: 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
8840: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
8850: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
8860: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
8870: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
8880: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
8890: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
88a0: 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20  tecture()..     
88b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
88c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
88d0: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
88e0: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
88f0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8900: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
8910: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
8920: 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
8930: 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
8940: 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  im for the curre
8950: 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  nt processor..  
8960: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8970: 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
8980: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8990: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
89a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
89b0: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
89c0: 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
89d0: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
89e0: 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41  QLite_ProcessorA
89f0: 72 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75  rchitecture", nu
8a00: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
8a10: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
8a20: 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e  rchitecture != n
8a30: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8a40: 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
8a50: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8a60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
8a70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
8a80: 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69  BUGBUG: Will thi
8a90: 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69  s always be reli
8aa0: 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20  able?..         
8ab0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   //..          p
8ac0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8ad0: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
8ae0: 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52  gValue(PROCESSOR
8af0: 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e  _ARCHITECTURE, n
8b00: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
8b10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
8b60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8b70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8b80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8b90: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65      // HACK: Che
8ba0: 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73  ck for an "impos
8bb0: 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e  sible" situation
8bc0: 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65  .  If the pointe
8bd0: 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  r size..        
8be0: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32    //       is 32
8bf0: 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65  -bits, the proce
8c00: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
8c10: 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44  e cannot be "AMD
8c20: 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  64"...          
8c30: 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74  //       In that
8c40: 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c   case, we are al
8c50: 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68  most certainly h
8c60: 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20  itting a bug in 
8c70: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
8c80: 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
8c90: 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20  g system and/or 
8ca0: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
8cb0: 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20  at causes the.. 
8cc0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
8cd0: 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48    PROCESSOR_ARCH
8ce0: 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e  ITECTURE environ
8cf0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
8d00: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
8d10: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8d20: 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20   wrong value in 
8d30: 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63  some circumstanc
8d40: 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65  es.  Please refe
8d50: 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20  r to ticket..   
8d60: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8d70: 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72  [9ac9862611] for
8d80: 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
8d90: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
8da0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
8db0: 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  f ((IntPtr.Size 
8dc0: 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20  == sizeof(int)) 
8dd0: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
8de0: 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28    String.Equals(
8df0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
8e00: 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d  cture, "AMD64",.
8e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8e20: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
8e30: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
8e40: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
8e50: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
8e60: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
8e70: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8ea0: 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63   NOTE: When trac
8eb0: 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ing is enabled, 
8ec0: 73 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61  save the origina
8ed0: 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20  lly detected..  
8ee0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
8ef0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
8f00: 72 63 68 69 74 65 63 74 75 72 65 20 62 65 66 6f  rchitecture befo
8f10: 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d  re changing it..
8f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
8f30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
8f40: 20 73 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f   string savedPro
8f50: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
8f60: 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72  re = processorAr
8f70: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e  chitecture;..#en
8f80: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
8f90: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8fa0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
8fb0: 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65  We know that ope
8fc0: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74  rating systems t
8fd0: 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36  hat return "AMD6
8fe0: 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  4" as..         
8ff0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
9000: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
9010: 69 74 65 63 74 75 72 65 20 61 72 65 20 61 63 74  itecture are act
9020: 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74  ually a superset
9030: 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20   of..           
9040: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
9050: 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20  "x86" processor 
9060: 61 72 63 68 69 74 65 63 74 75 72 65 3b 20 74 68  architecture; th
9070: 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d  erefore, return.
9080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9090: 2f 20 20 20 20 20 20 20 22 78 38 36 22 20 77 68  /       "x86" wh
90a0: 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  en the pointer s
90b0: 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d  ize is 32-bits..
90c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
90d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
90e0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
90f0: 65 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d  ecture = "x86";.
9100: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
9110: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
9120: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
9130: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9140: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9170: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9180: 53 68 6f 77 20 74 68 61 74 20 77 65 20 68 69 74  Show that we hit
9190: 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61   a fairly unusua
91a0: 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65  l situation (i.e
91b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
91c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
91d0: 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73  e "wrong" proces
91e0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
91f0: 20 77 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d   was detected)..
9200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9210: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9220: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
9230: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 46  riteLine(StringF
9240: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
9250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
9260: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
9270: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
9280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9290: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
92a0: 20 70 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65   pre-loader dete
92b0: 63 74 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69  cted {0}-bit poi
92c0: 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20  nter " +..      
92d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92e0: 22 73 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65  "size with proce
92f0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9300: 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67  e \"{1}\", using
9310: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
9320: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 6f              "pro
9330: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
9340: 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74  ure \"{2}\" inst
9350: 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20  ead...",..      
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20  IntPtr.Size * 8 
9380: 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65  /* bits */, save
9390: 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  dProcessorArchit
93a0: 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ecture,..       
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
93c0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
93d0: 74 75 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ture)); /* throw
93e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
93f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9400: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
9410: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9430: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9440: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
9450: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
9460: 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20   }..#else..     
9470: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
9480: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
9490: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
94a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
94b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
94c0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
94d0: 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
94e0: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74  ct Framework, at
94f0: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
9500: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
9510: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9520: 57 69 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69  Win32 API functi
9530: 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65  on (via P/Invoke
9540: 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69  ) that can provi
9550: 64 65 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20  de us..         
9560: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69       //       wi
9570: 74 68 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  th the processor
9580: 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
9590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
95a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95b0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
95c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
95d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
95f0: 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75   NOTE: The outpu
9600: 74 20 6f 66 20 74 68 65 20 47 65 74 53 79 73 74  t of the GetSyst
9610: 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20  emInfo function 
9620: 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20  will be..       
9630: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9640: 20 20 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e      placed here.
9650: 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65    Only the proce
9660: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9670: 65 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20  e field..       
9680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9690: 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20 74      is used by t
96a0: 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  his method...   
96b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
96c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
96d0: 20 20 20 20 20 53 59 53 54 45 4d 5f 49 4e 46 4f       SYSTEM_INFO
96e0: 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a   systemInfo;....
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9700: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9710: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9720: 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74 65   Query the syste
9730: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69  m information vi
9740: 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73  a P/Invoke, thus
9750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9760: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c      //       fil
9770: 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75  ling the structu
9780: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
9790: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
97b0: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73  SystemInfo(out s
97c0: 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
97f0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9800: 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65  Return the proce
9810: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9820: 65 20 76 61 6c 75 65 20 61 73 20 61 20 73 74 72  e value as a str
9830: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
9840: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
9860: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9870: 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ure =..         
9880: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73               sys
9890: 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73  temInfo.wProcess
98a0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2e 54  orArchitecture.T
98b0: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
98c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
98d0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
98e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
98f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9900: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
9910: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
9920: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9930: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9940: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9950: 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72   Upon failure, r
9960: 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73  eturn an empty s
9970: 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c  tring.  This wil
9980: 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20  l prevent..     
9990: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
99a0: 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65    the calling me
99b0: 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64  thod from consid
99c0: 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  ering this metho
99d0: 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20  d call a..      
99e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
99f0: 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20   "failure"...   
9a00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
9a20: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9a30: 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  re = String.Empt
9a40: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
9a50: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
9a60: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9ab0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
9ac0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9ad0: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ture;..      }..
9ae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9b40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9b50: 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
9b60: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
9b70: 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
9b80: 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
9b90: 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
9ba0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9bb0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
9bc0: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
9bd0: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
9be0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
9bf0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9c00: 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
9c10: 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
9c20: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
9c30: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
9c40: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
9c50: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
9c60: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
9c70: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
9c80: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
9c90: 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
9ca0: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
9cb0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
9cc0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
9cd0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9ce0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9cf0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
9d00: 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
9d10: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
9d20: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9d30: 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  re /* in */..   
9d40: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
9d50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
9d60: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
9d70: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
9d80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
9d90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9da0: 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
9db0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
9dc0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9dd0: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
9de0: 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73  lOrEmpty(process
9df0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
9e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9e10: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
9e20: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9e30: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
9e40: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
9e50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9e60: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
9e70: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
9e80: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
9e90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9ea0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
9eb0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
9ec0: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d  platformName;...
9ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
9ee0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
9ef0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
9f00: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a  s.TryGetValue(..
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f20: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
9f30: 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74  rchitecture, out
9f40: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d   platformName)).
9f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
9f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9f70: 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66      return platf
9f80: 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ormName;..      
9f90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9fa0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9fb0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
9fc0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
9fd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
a020: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a030: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
a040: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
a050: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
a060: 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e  library based on
a070: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
a080: 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
a090: 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ory and processo
a0a0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
a0b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a0c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a0d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
a0e0: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
a0f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
a100: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
a110: 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
a120: 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
a130: 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
a140: 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
a150: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
a160: 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
a170: 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
a180: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
a190: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
a1a0: 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
a1b0: 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
a1c0: 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
a1d0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
a1e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
a1f0: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
a200: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
a210: 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
a220: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
a230: 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
a240: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
a250: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
a260: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
a270: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
a280: 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
a290: 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
a2a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
a2b0: 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
a2c0: 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
a2d0: 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
a2e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a2f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a300: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
a310: 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  uleFileName">.. 
a320: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e       /// The can
a330: 64 69 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f  didate native mo
a340: 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74  dule file name t
a350: 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73  o load will be s
a360: 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20  tored here,..   
a370: 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73     /// if necess
a380: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
a390: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
a3a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
a3b0: 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  "nativeModuleHan
a3c0: 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  dle">..      ///
a3d0: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
a3e0: 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74  le handle as ret
a3f0: 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62  urned by LoadLib
a400: 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f  rary will be sto
a410: 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  red..      /// h
a420: 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72  ere, if necessar
a430: 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  y.  This value w
a440: 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65  ill be IntPtr.Ze
a450: 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74  ro if the call t
a460: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61  o..      /// Loa
a470: 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d  dLibrary fails..
a480: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
a490: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
a4a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
a4b0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
a4c0: 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
a4d0: 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63  e was loaded suc
a4e0: 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72  cessfully; other
a4f0: 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
a500: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
a510: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a520: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
a530: 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53  ic bool PreLoadS
a540: 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
a550: 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65       string base
a560: 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20  Directory,      
a570: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
a580: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a590: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
a5a0: 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e  ecture,    /* in
a5b0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
a5c0: 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76 65  ef string native
a5d0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20  ModuleFileName, 
a5e0: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
a5f0: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
a600: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
a610: 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d  le    /* out */.
a620: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
a630: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a640: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
a650: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
a660: 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64 69  pecified base di
a670: 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c  rectory is null,
a680: 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   use the default
a690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
a6a0: 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65 6d       (i.e. attem
a6b0: 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  pt to automatica
a6c0: 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e 0d  lly detect it)..
a6d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
a6e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
a6f0: 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
a700: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a710: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
a720: 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
a730: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
a740: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a750: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
a760: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
a770: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
a780: 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
a790: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a7a0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73 65          if (base
a7b0: 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
a7c0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
a7d0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a7e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
a7f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
a800: 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76  TE: If the nativ
a810: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
a820: 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62   exists in the b
a830: 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20  ase directory.. 
a840: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a850: 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e    itself, stop n
a860: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
a870: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
a880: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46  ing fileName = F
a890: 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
a8a0: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
a8b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a8c0: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
a8d0: 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d  SQLITE_DLL));...
a8e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
a8f0: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
a900: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
a910: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
a920: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a930: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
a940: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
a950: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
a960: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
a970: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
a980: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
a990: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
a9a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a9b0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
a9c0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
a9d0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
a9e0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
a9f0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
aa00: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
aa10: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
aa20: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
aa30: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
aa40: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
aa50: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
aa60: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
aa70: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
aa80: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
aa90: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
aaa0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
aab0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
aac0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
aad0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
aae0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
aaf0: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
ab00: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
ab10: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
ab20: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
ab30: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
ab40: 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
ab50: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
ab60: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
ab70: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
ab80: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
ab90: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
aba0: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
abb0: 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
abc0: 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
abd0: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
abe0: 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
abf0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
ac00: 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d  , SQLITE_DLL));.
ac10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
ac20: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
ac30: 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
ac40: 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68  name based on th
ac50: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
ac60: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20  itecture name.. 
ac70: 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e           // is n
ac80: 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73  ot found, try us
ac90: 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74  ing the associat
aca0: 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  ed platform name
acb0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
acc0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
acd0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
ace0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
acf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ad00: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ad10: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
ad20: 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61  tempt to transla
ad30: 74 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  te the processor
ad40: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
ad50: 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
ad60: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66    //       platf
ad70: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
ad80: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ad90: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
ada0: 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d  g platformName =
adb0: 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
adc0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
add0: 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
ade0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
adf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
ae00: 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
ae10: 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  d to translate t
ae20: 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
ae30: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
ae40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ae60: 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d  (platformName ==
ae70: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ae80: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ae90: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
aea0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
aeb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
aec0: 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75  TE: Build the fu
aed0: 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65  ll path and file
aee0: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
aef0: 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
af00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
af10: 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e      library usin
af20: 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  g the platform n
af30: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
af40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
af50: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
af60: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
af70: 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
af80: 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  th(MaybeCombineP
af90: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
afa0: 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
afb0: 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e  ctory, platformN
afc0: 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c  ame), SQLITE_DLL
afd0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
afe0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
aff0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
b000: 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73  If the file does
b010: 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70   not exist, skip
b020: 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
b030: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
b040: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b050: 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
b060: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
b070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b080: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
b0a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
b0b0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
b0c0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
b0d0: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
b0e0: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
b0f0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
b100: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b110: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b130: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78  // NOTE: Show ex
b140: 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61  actly where we a
b150: 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  re trying to loa
b160: 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  d the native..  
b170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b180: 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20  //       SQLite 
b190: 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20  library from... 
b1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
b1c0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
b1d0: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72  teLine(StringFor
b1e0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
b1f0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
b200: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
b210: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
b220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
b230: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
b240: 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79  re-loader is try
b250: 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69  ing to load nati
b260: 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ve " +..        
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53                "S
b280: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22  QLite library \"
b290: 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e  {0}\"...", fileN
b2a0: 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ame)); /* throw 
b2b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
b2c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
b2d0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
b2e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
b300: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
b310: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
b320: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
b330: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b340: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
b350: 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64   Attempt to load
b360: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
b370: 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  ary.  This will 
b380: 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
b390: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
b3a0: 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61  eturn a valid na
b3b0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
b3c0: 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74  le, return IntPt
b3d0: 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20  r.Zero,..       
b3e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
b3f0: 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65  or throw an exce
b400: 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ption...        
b410: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b420: 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
b430: 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66  duleFileName = f
b440: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
b450: 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
b460: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4c 6f 61  duleHandle = Loa
b470: 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d  dLibrary(fileNam
b480: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
b490: 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74       return (nat
b4a0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
b4b0: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  != IntPtr.Zero);
b4c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
b4d0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
b4e0: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
b4f0: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  OAD..          c
b500: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
b510: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
b520: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
b530: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
b540: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
b550: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
b560: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
b570: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
b580: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
b590: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b5a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b5c0: 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67  / NOTE: First, g
b5d0: 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e  rab the last Win
b5e0: 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e  32 error number.
b5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b600: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
b610: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61            int la
b620: 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61  stError = Marsha
b630: 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72  l.GetLastWin32Er
b640: 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ror(); /* throw 
b650: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
b660: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b680: 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72   NOTE: Show wher
b690: 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c  e we failed to l
b6a0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  oad the native S
b6b0: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
b6c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b6d0: 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61    library from a
b6e0: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69  long with the Wi
b6f0: 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61  n32 error code a
b700: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
b710: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
b720: 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61  xception informa
b730: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
b740: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
b760: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
b770: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
b780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b790: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
b7a0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
b7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b7c0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
b7d0: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
b7e0: 72 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  r failed to load
b7f0: 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20   native " +..   
b800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b810: 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61     "SQLite libra
b820: 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c  ry \"{0}\" (getL
b830: 61 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a  astError = {1}):
b840: 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {2}",..        
b850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
b860: 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f  leName, lastErro
b870: 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  r, e)); /* throw
b880: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
b890: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b8a0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
b8b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b8d0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
b8f0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
b900: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
b910: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
b920: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
b930: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
b940: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b950: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
b960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
b9a0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
b9b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b9c0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
b9d0: 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43  E: On the .NET C
b9e0: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
b9f0: 2c 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74  , the native int
ba00: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75  erop assembly mu
ba10: 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  st..    //      
ba20: 20 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65   be used because
ba30: 20 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76   it provides sev
ba40: 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73  eral workarounds
ba50: 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74   to .NET Compact
ba60: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46  ..    //       F
ba70: 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74  ramework limitat
ba80: 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66  ions important f
ba90: 6f 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74  or proper operat
baa0: 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d  ion of the core.
bab0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79  .    //       Sy
bac0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
bad0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28   functionality (
bae0: 65 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20  e.g. being able 
baf0: 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20  to bind..    // 
bb00: 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73        parameters
bb10: 20 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75   and handle colu
bb20: 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70  mn values of typ
bb30: 65 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75  es Int64 and Dou
bb40: 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  ble)...    //..#
bb50: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
bb60: 52 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d  RD_LIBRARY_NAME.
bb70: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
bb80: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
bb90: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
bba0: 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69  ";..#else..    i
bbb0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
bbc0: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
bbd0: 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f  = "SQLite.Intero
bbe0: 70 2e 31 30 30 2e 64 6c 6c 22 3b 0d 0a 23 65 6e  p.100.dll";..#en
bbf0: 64 69 66 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  dif..#elif SQLIT
bc00: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
bc10: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
bc20: 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
bc30: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
bc40: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
bc50: 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
bc60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
bc70: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
bc80: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
bc90: 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
bca0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
bcb0: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
bcc0: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
bcd0: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
bce0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
bcf0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
bd00: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
bd10: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
bd20: 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f   //..#if SQLITE_
bd30: 53 54 41 4e 44 41 52 44 5f 4c 49 42 52 41 52 59  STANDARD_LIBRARY
bd40: 5f 4e 41 4d 45 0d 0a 20 20 20 20 69 6e 74 65 72  _NAME..    inter
bd50: 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
bd60: 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73   SQLITE_DLL = "s
bd70: 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 73 65 0d  qlite3";..#else.
bd80: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
bd90: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
bda0: 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e  E_DLL = "SQLite.
bdb0: 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23  Interop.dll";..#
bdc0: 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
bdd0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
bde0: 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75  E: Finally, assu
bdf0: 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65  me that the mixe
be00: 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20  d-mode assembly 
be10: 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a  is being used...
be20: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
be30: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
be40: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
be50: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
be60: 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  te.dll";..#endif
be70: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20  ....    // This 
be80: 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74  section uses int
be90: 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20  erop calls that 
bea0: 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20  also fetch text 
beb0: 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69  length to optimi
bec0: 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a  ze conversion...
bed0: 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e      // When usin
bee0: 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64  g the standard d
bef0: 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61  ll, we can repla
bf00: 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77  ce these calls w
bf10: 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74  ith normal sqlit
bf20: 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20  e calls and..   
bf30: 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a   // do unoptimiz
bf40: 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69  ed conversions i
bf50: 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64  nstead afterward
bf60: 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  s..    #region i
bf70: 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78  nterop added tex
bf80: 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d  tlength calls...
bf90: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
bfa0: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
bfb0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bfc0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
bfd0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bfe0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
bff0: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
c000: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
c010: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c020: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
c030: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
c040: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c050: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c060: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
c070: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
c080: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
c090: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
c0a0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
c0b0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
c0c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c0d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
c0e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c0f0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
c100: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
c110: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f  database_name16_
c120: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
c130: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
c140: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
c150: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c160: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
c170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c180: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
c190: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
c1a0: 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28  ecltype_interop(
c1b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
c1c0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
c1d0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
c1e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c1f0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
c200: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c210: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
c220: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
c230: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
c240: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
c250: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
c260: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
c270: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c280: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c290: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c2a0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
c2b0: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
c2c0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
c2d0: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
c2e0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
c2f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c300: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c310: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
c320: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
c330: 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  lumn_name16_inte
c340: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
c350: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
c360: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
c370: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c380: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
c390: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c3a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
c3b0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
c3c0: 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
c3d0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
c3e0: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
c3f0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
c400: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c410: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
c420: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
c430: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
c440: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
c450: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
c460: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c470: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
c480: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
c490: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c4a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c4b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
c4c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
c4d0: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e  mn_table_name_in
c4e0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
c4f0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
c500: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
c510: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c520: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
c530: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c540: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
c550: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
c560: 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  le_name16_intero
c570: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
c580: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
c590: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
c5a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c5b0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
c5c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c5d0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
c5e0: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e  3_column_text_in
c5f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
c600: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
c610: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
c620: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c630: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
c640: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c650: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
c660: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
c670: 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
c680: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c690: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
c6a0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
c6b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c6c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c6d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
c6e0: 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
c6f0: 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
c700: 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65  r db, ref int le
c710: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
c720: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c730: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c740: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
c750: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
c760: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
c770: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
c780: 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
c790: 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
c7a0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
c7b0: 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
c7c0: 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69  , ref int nRemai
c7d0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
c7e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c7f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c800: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
c810: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
c820: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
c830: 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74  umn_metadata_int
c840: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
c850: 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
c860: 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
c870: 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72  yte[] colName, r
c880: 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ef IntPtr ptrDat
c890: 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74  aType, ref IntPt
c8a0: 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65  r ptrCollSeq, re
c8b0: 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72  f int notNull, r
c8c0: 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ef int primaryKe
c8d0: 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49  y, ref int autoI
c8e0: 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65  nc, ref int dtLe
c8f0: 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e  n, ref int csLen
c900: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
c910: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c920: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
c930: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
c940: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
c950: 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  ue_text_interop(
c960: 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
c970: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
c980: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c990: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
c9a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c9b0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
c9c0: 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69  3_value_text16_i
c9d0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
c9e0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
c9f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ca00: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
ca10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ca20: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
ca30: 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a  lite3_malloc_siz
ca40: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
ca50: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45   p);....#if INTE
ca60: 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c  ROP_LOG..    [Dl
ca70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ca80: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
ca90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
caa0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
cab0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
cac0: 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a  log_interop();..
cad0: 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
cae0: 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
caf0: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
cb00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
cb10: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
cb20: 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e  add existing fun
cb30: 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f  ctionality on to
cb40: 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  p of SQLite and 
cb50: 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65  require a little
cb60: 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20   effort to..    
cb70: 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77  // get working w
cb80: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74  hen using the st
cb90: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
cba0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67  brary...    #reg
cbb0: 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
cbc0: 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d  d functionality.
cbd0: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
cbe0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
cbf0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cc00: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
cc10: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cc20: 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f  rn IntPtr intero
cc30: 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  p_libversion();.
cc40: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
cc50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cc60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
cc70: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
cc80: 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65  r interop_source
cc90: 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  id();....    [Dl
cca0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ccb0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
ccc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ccd0: 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d   int interop_com
cce0: 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
ccf0: 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29  IntPtr zOptName)
cd00: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
cd10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
cd20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
cd30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
cd40: 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  Ptr interop_comp
cd50: 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
cd60: 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  t N);....    [Dl
cd70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cd80: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
cd90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cda0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
cdb0: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
cdc0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
cdd0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
cde0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cdf0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
ce00: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
ce10: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
ce20: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
ce30: 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e  ction_interop(In
ce40: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
ce50: 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
ce60: 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
ce70: 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
ce80: 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
ce90: 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
cea0: 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
ceb0: 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
cec0: 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c  nal, int needCol
ced0: 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  lSeq);....    [D
cee0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cef0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
cf00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cf10: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
cf20: 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
cf30: 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
cf40: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  r stmt);....    
cf50: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cf60: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
cf70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
cf80: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
cf90: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
cfa0: 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f  up_finish_intero
cfb0: 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  p(IntPtr backup)
cfc0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
cfd0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
cfe0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
cff0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
d000: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
d010: 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
d020: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
d030: 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
d040: 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
d050: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
d060: 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
d070: 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
d080: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
d090: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d0a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d0b0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d0c0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d0d0: 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
d0e0: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
d0f0: 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
d100: 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
d110: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
d120: 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
d130: 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
d140: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
d150: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d160: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d170: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d180: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d190: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
d1a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
d1b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d1c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
d1d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d1e0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
d1f0: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
d200: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
d210: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
d220: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
d230: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
d240: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
d250: 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
d260: 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
d270: 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
d280: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
d290: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
d2a0: 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
d2b0: 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
d2c0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
d2d0: 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
d2e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d2f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d300: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d310: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d320: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
d330: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
d340: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
d350: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d360: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
d370: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d380: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
d390: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
d3a0: 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
d3b0: 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
d3c0: 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
d3d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d3e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d3f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d400: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d410: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d420: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d430: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d440: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d450: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d460: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d470: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d480: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
d490: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
d4a0: 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
d4b0: 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
d4c0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
d4d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d4e0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d4f0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d500: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d510: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
d520: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
d530: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
d540: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d550: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
d560: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d570: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
d580: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
d590: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
d5a0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
d5b0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
d5c0: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
d5d0: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
d5e0: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
d5f0: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
d600: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
d610: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
d620: 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
d630: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d640: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d650: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d660: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d670: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d680: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d690: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d6a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d6b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d6c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d6d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d6e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d6f0: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
d700: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
d710: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d720: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d730: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d740: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d750: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d760: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d770: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d780: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d790: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d7a0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d7b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
d7c0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
d7d0: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
d7e0: 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
d7f0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
d800: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d810: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d820: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d830: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d840: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d850: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d860: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d870: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d880: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d890: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d8a0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
d8b0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
d8c0: 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
d8d0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
d8e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d8f0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d900: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d910: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d920: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d930: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d940: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d950: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d960: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d970: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d980: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
d990: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
d9a0: 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
d9b0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d9c0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
d9d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d9e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d9f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
da00: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
da10: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
da20: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
da30: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
da40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
da50: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
da60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
da70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
da80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
da90: 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
daa0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
dab0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
dac0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
dad0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
dae0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
daf0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
db00: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
db10: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
db20: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
db30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
db40: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
db50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
db60: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
db70: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
db80: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
db90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
dba0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
dbb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
dbc0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
dbd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
dbe0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
dbf0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
dc00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
dc10: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
dc20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dc30: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
dc40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dc50: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
dc60: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
dc70: 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
dc80: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
dc90: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
dca0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dcb0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
dcc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
dcd0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
dce0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
dcf0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
dd00: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
dd10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
dd20: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
dd30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
dd40: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
dd50: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
dd60: 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
dd70: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
dd80: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
dd90: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
dda0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ddb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ddc0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ddd0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
dde0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ddf0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
de00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
de10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
de20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
de30: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
de40: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
de50: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
de60: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
de70: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
de80: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
de90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dea0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
deb0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
dec0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ded0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
dee0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
def0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
df00: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
df10: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
df20: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
df30: 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
df40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
df50: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
df60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
df70: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
df80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
df90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
dfa0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
dfb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
dfc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
dfd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
dfe0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
dff0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e000: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
e010: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
e020: 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
e030: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
e040: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e050: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e060: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e070: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e080: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e090: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e0a0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e0b0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e0c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e0d0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e0e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e0f0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
e100: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
e110: 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
e120: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
e130: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
e140: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e150: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e160: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e170: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e180: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e190: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e1a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e1b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e1c0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e1d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e1e0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
e1f0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
e200: 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
e210: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
e220: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e230: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e240: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e250: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e260: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e270: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e280: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e290: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e2a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e2b0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e2c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e2d0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
e2e0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
e2f0: 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
e300: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
e310: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e320: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e330: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e340: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e350: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e360: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e370: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e380: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e390: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e3a0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e3b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e3c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
e3d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
e3e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
e3f0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
e400: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e410: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e420: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e430: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e440: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e450: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e460: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e470: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e480: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e490: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e4a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
e4b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
e4c0: 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
e4d0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
e4e0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
e4f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e500: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e510: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e520: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e530: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e540: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e550: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e560: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e570: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e580: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e590: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
e5a0: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
e5b0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
e5c0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e5d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e5e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e5f0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e600: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e610: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e620: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e630: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e640: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e650: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e660: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
e670: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
e680: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
e690: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
e6a0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
e6b0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
e6c0: 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
e6d0: 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
e6e0: 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
e6f0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e700: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e710: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e720: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e730: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e740: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e750: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e760: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e770: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e780: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e790: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e7a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
e7b0: 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
e7c0: 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
e7d0: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
e7e0: 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
e7f0: 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
e800: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
e810: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
e820: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
e830: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e840: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e850: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
e860: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
e870: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e880: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e890: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e8a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e8b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e8c0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
e8d0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
e8e0: 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
e8f0: 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
e900: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
e910: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
e920: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
e930: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
e940: 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
e950: 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
e960: 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
e970: 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
e980: 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
e990: 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
e9a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e9b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e9c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e9d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e9e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e9f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ea00: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
ea10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ea20: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
ea30: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
ea40: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ea50: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
ea60: 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
ea70: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
ea80: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ea90: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
eaa0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
eab0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
eac0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
ead0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
eae0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
eaf0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
eb00: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
eb10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
eb20: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
eb30: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
eb40: 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
eb50: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
eb60: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
eb70: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
eb80: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
eb90: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
eba0: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
ebb0: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
ebc0: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
ebd0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
ebe0: 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
ebf0: 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
ec00: 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
ec10: 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
ec20: 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
ec30: 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
ec40: 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
ec50: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
ec60: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
ec70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ec80: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
ec90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
eca0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
ecb0: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
ecc0: 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
ecd0: 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
ece0: 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
ecf0: 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
ed00: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
ed10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ed20: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
ed30: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
ed40: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
ed50: 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
ed60: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
ed70: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
ed80: 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
ed90: 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
eda0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
edb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
edc0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
edd0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
ede0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
edf0: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
ee00: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
ee10: 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
ee20: 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
ee30: 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
ee40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ee50: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
ee60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ee70: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
ee80: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
ee90: 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
eea0: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
eeb0: 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
eec0: 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
eed0: 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
eee0: 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
eef0: 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
ef00: 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
ef10: 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
ef20: 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
ef30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ef40: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ef50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ef60: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
ef70: 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
ef80: 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
ef90: 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
efa0: 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
efb0: 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
efc0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
efd0: 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
efe0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
eff0: 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
f000: 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
f010: 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
f020: 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
f030: 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
f040: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
f050: 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
f060: 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
f070: 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
f080: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f090: 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
f0a0: 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
f0b0: 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
f0c0: 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
f0d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f0e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f0f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f100: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f110: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f120: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f130: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
f140: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f150: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
f160: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
f170: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f180: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
f190: 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
f1a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f1b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f1c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f1d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
f1e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
f1f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f200: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
f210: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f220: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f230: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f240: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f250: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
f260: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
f270: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
f280: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f290: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f2a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f2b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f2c0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f2d0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f2e0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f2f0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f300: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
f310: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f320: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
f330: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
f340: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f350: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f360: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
f370: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
f380: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f390: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
f3a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
f3b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
f3c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f3d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
f3e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f3f0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
f400: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
f410: 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
f420: 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
f430: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f440: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f450: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f460: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f470: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f480: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f490: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f4a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f4b0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f4c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f4d0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f4e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
f4f0: 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
f500: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
f510: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f520: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f530: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f540: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f550: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
f560: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f570: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f580: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f590: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f5a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f5b0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
f5c0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
f5d0: 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
f5e0: 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  he(..        int
f5f0: 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
f600: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f610: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f620: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f630: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f640: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f650: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f660: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f670: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f680: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f690: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f6a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
f6b0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
f6c0: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
f6d0: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
f6e0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
f6f0: 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
f700: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f710: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f720: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f730: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f740: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f750: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f760: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
f770: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f780: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
f790: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
f7a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f7b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
f7c0: 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  e sqlite3_load_e
f7d0: 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
f7e0: 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79     IntPtr db, by
f7f0: 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62  te[] fileName, b
f800: 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20  yte[] procName, 
f810: 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
f820: 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
f830: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f840: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
f850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f860: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
f870: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
f880: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
f890: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
f8a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f8b0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
f8c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f8d0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
f8e0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
f8f0: 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f  overload_functio
f900: 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  n(IntPtr db, Int
f910: 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  Ptr zName, int n
f920: 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49  Args);....#if WI
f930: 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54  NDOWS..#if !PLAT
f940: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f950: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
f960: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f970: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
f980: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
f990: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
f9a0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
f9b0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
f9c0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
f9d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
f9e0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
f9f0: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
fa00: 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
fa10: 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
fa20: 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
fa30: 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65  irectory" SQLite
fa40: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
fa50: 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
fa60: 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
fa70: 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
fa80: 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  s...    //..    
fa90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
faa0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
fab0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
fac0: 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f  in32_set_directo
fad0: 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74  ry(uint type, st
fae0: 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
faf0: 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f  #if !DEBUG // NO
fb00: 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57  TE: Should be "W
fb10: 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d  IN32HEAP && !MEM
fb20: 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41  DEBUG"..#if !PLA
fb30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fb40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
fb50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fb60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
fb70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
fb80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
fb90: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fbb0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
fbc0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
fbd0: 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
fbe0: 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
fbf0: 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
fc00: 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
fc10: 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
fc20: 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
fc30: 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
fc40: 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
fc50: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
fc60: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
fc70: 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
fc80: 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
fc90: 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
fca0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
fcb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
fcc0: 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
fcd0: 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
fce0: 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
fcf0: 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
fd00: 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
fd10: 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
fd20: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
fd30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fd40: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fd50: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fd60: 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
fd70: 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eap();....#if !P
fd80: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
fd90: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
fda0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fdb0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
fdc0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
fdd0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
fde0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
fdf0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fe00: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
fe10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
fe20: 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
fe30: 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
fe40: 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
fe50: 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
fe60: 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
fe70: 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
fe80: 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
fe90: 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
fea0: 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
feb0: 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
fec0: 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
fed0: 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
fee0: 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
fef0: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
ff00: 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
ff10: 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
ff20: 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
ff30: 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
ff40: 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
ff50: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
ff60: 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
ff70: 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
ff80: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
ff90: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
ffa0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
ffb0: 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
ffc0: 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69  pact_heap(ref ui
ffd0: 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65  nt largest);..#e
ffe0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
fff0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10000 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10010 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10020 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10030 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10050 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10060 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10070 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10080 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10090 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
100a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
100b0 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
100c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
100d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
100e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
100f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10130 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10140 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10150 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10160 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10170 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10180 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72  3_realloc(IntPtr
10190 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23   p, int n);....#
101a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
101b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
101c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
101d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
101e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
101f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10200 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10210 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10220 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10230 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10240 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10250 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
10260 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
10270 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10280 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10290 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
102a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
102b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
102c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
102d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
102e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
102f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10300 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10310 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10320 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10330 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
10340 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
10350 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  name, ref IntPtr
10360 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46   db, SQLiteOpenF
10370 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
10380 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b  byte[] vfsName);
10390 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
103a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
103b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
103c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
103d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
103e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
103f0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
10400 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
10410 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
10420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10430 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
10440 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
10450 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
10460 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10470 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10480 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10490 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
104a0 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49   fileName, ref I
104b0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
104c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
104d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
104e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
104f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10500 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10520 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10530 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10540 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10550 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10560 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
10570 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
10580 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29  rrupt(IntPtr db)
10590 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
105a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
105b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
105c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
105d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
105e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
105f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
10600 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10610 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
10620 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
10630 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
10640 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  db);..#endif....
10650 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10660 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10670 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10680 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10690 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
106a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
106b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
106c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
106d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
106e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
106f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10700 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
10710 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
10720 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10730 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10740 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10760 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10770 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10780 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
10790 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
107a0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
107b0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
107c0 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  d();..#endif....
107d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
107e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
107f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10800 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10810 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10820 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10830 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
10840 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10850 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
10860 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
10870 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  er(int resetFlag
10880 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
10890 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
108a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
108b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
108c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
108d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
108e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
108f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10900 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10910 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10920 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10930 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
10940 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
10950 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
10960 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10970 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10980 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10990 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
109a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
109b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
109c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
109d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
109e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
109f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10a00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10a10 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10a20 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
10a30 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50  usy_timeout(IntP
10a40 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d  tr db, int ms);.
10a50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10a60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10a70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10a80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10a90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10aa0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10ab0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10ac0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10ad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10ae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10af0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10b00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10b10 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61  ode sqlite3_clea
10b20 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74  r_bindings(IntPt
10b30 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
10b40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10b50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10b60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10b70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10b80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10ba0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10bc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10bd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10be0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10bf0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10c00 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49  ite3_bind_blob(I
10c10 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10c20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61  index, Byte[] va
10c30 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
10c40 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e  IntPtr nTransien
10c50 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
10c60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10c70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10c80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10c90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10ca0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10cb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10cc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10cd0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
10ce0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
10cf0 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
10d00 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
10d10 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76   index, double v
10d20 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
10d30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10d40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10d60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10d70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10d80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10d90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10da0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10db0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10dc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10dd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10de0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10df0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
10e00 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
10e10 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20   int index, int 
10e20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  value);....    /
10e30 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
10e40 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
10e50 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
10e60 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76  bind_int"; howev
10e70 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a  er, it has the..
10e80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72      //       cor
10e90 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74  rect type signat
10ea0 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67  ure for an unsig
10eb0 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74  ned (32-bit) int
10ec0 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
10ed0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10ee0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10ef0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10f00 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
10f10 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
10f20 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69  bind_int", Calli
10f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10f50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10f70 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
10f80 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
10f90 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23  3_bind_int")]..#
10fa0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10fb0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10fc0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10fd0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
10fe0 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
10ff0 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74   int index, uint
11000 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
11010 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11020 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11030 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11040 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11050 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11060 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11070 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
11080 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11090 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
110a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
110b0 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
110c0 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67   int index, long
110d0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
110e0 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
110f0 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
11100 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
11110 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
11120 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  t64"; however, i
11130 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
11140 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
11150 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
11160 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c  or an unsigned l
11170 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74  ong (64-bit) int
11180 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
11190 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
111a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
111b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
111c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
111d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
111e0 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c  bind_int64", Cal
111f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11200 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11210 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
11220 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11230 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
11240 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
11250 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74  ind_uint64(IntPt
11260 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11270 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  x, ulong value);
11280 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
11290 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
112a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
112b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
112c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
112d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
112e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
112f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11300 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11310 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11320 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11330 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11340 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11350 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49  ite3_bind_null(I
11360 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
11370 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
11380 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11390 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
113a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
113b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
113c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
113d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
113e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
113f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11400 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11410 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11420 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
11430 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
11440 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e  te3_bind_text(In
11450 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
11460 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c  ndex, byte[] val
11470 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
11480 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
11490 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
114a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
114b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
114c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
114d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
114e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
114f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11540 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
11550 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
11560 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
11570 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
11580 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11590 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
115a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
115b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
115c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
115d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
115e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
115f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11600 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11610 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11620 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
11630 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
11640 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72  ter_index(IntPtr
11650 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74   stmt, byte[] st
11660 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  rName);....#if !
11670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11690 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
116a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
116b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
116c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
116d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
116e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
116f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11700 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11710 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
11720 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63  sqlite3_column_c
11730 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
11740 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11750 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11760 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11770 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11780 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11790 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
117a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
117b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
117c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
117d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
117e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
117f0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
11800 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
11810 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  tep(IntPtr stmt)
11820 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11830 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11840 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11870 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11880 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11890 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
118a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
118b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
118c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
118d0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
118e0 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
118f0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a  IntPtr stmt); /*
11900 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69   3.7.4+ */....#i
11910 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11920 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11930 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11940 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11950 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11960 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11970 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
11980 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11990 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
119a0 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
119b0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
119c0 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
119d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
119e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
119f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11a00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11a10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11a20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11a30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11a40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11a50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11a60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11a70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11a80 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
11a90 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
11aa0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
11ab0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
11ac0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11ad0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11ae0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11af0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11b00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11b10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11b20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11b30 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
11b40 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
11b50 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
11b60 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
11b70 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
11b80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11b90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11ba0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11bb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11bc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11bd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11be0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11bf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11c00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11c10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11c20 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11c30 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
11c40 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74  n_blob(IntPtr st
11c50 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
11c60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11c70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11c80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11c90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11ca0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11cb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11cc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11cd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11ce0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11cf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11d00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11d10 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
11d20 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74  column_bytes(Int
11d30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
11d40 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
11d50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11d60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11d70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11d80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11d90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11da0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11db0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11dc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11dd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11df0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
11e00 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
11e10 65 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  es16(IntPtr stmt
11e20 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
11e30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11e40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11e50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11e60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11e70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11e80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11e90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11ea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11eb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11ec0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11ed0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11ee0 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73  n TypeAffinity s
11ef0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
11f00 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
11f10 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
11f20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11f30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11f40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11f50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11f60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11f70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11f80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11f90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11fa0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11fb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11fc0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11fd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11fe0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
11ff0 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20  ollation(IntPtr 
12000 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
12010 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  me, int nType, I
12020 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
12030 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75  LiteCollation fu
12040 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nc);....#if !PLA
12050 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12060 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12080 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12090 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
120a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
120b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
120c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
120d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
120e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
120f0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
12100 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
12110 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  ount(IntPtr cont
12120 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
12130 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12140 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12160 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12170 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12180 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12190 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
121a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
121b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
121c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
121d0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
121e0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
121f0 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  lob(IntPtr p);..
12200 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12210 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12220 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12230 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12240 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12250 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12260 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12270 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12280 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12290 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
122a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
122b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
122c0 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74  alue_bytes(IntPt
122d0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
122e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
122f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12300 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12310 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12320 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12330 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12340 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12360 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12370 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12380 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
12390 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
123a0 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  s16(IntPtr p);..
123b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
123c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
123d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
123e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
123f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12410 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
12420 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12430 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
12440 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
12450 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  le(IntPtr p);..#
12460 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
12470 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12480 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12490 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
124a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
124b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
124c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
124d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
124e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
124f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12500 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12510 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
12520 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
12530 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
12540 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12550 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12560 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12570 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12580 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12590 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
125a0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
125b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
125c0 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
125d0 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50  value_int64(IntP
125e0 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
125f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12600 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12610 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12620 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12630 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12640 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12650 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12660 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12680 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12690 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
126a0 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
126b0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
126c0 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  pe(IntPtr p);...
126d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
126e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
126f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12700 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12710 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12720 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12730 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12740 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12750 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12760 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12770 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12780 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
12790 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74  esult_blob(IntPt
127a0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
127b0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
127c0 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  ze, IntPtr pvRes
127d0 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
127e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
127f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12800 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12810 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12820 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12830 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12840 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
12850 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12860 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
12870 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ult_double(IntPt
12880 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c  r context, doubl
12890 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
128a0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
128b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
128c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
128d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
128e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
128f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12900 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12910 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12920 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12930 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12940 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12950 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
12960 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28  e3_result_error(
12970 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
12980 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69  byte[] strErr, i
12990 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
129a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
129b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
129c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
129d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
129e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
129f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12a00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12a10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12a20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12a30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12a40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
12a50 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
12a60 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74  t_error_code(Int
12a70 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
12a80 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c  iteErrorCode val
12a90 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
12aa0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12ab0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ad0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12ae0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12af0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12b00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12b10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12b20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12b30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12b40 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
12b50 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
12b60 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72  or_toobig(IntPtr
12b70 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
12b80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12b90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12ba0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12bb0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12bc0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12bd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12be0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12bf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12c00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12c10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12c20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
12c30 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
12c40 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49  lt_error_nomem(I
12c50 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
12c60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12c70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12c80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12c90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12ca0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12cb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12cc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12cd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12ce0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12cf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12d00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12d10 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
12d20 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e  _result_value(In
12d30 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
12d40 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  tPtr value);....
12d50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12d60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12d70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12d80 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12d90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12db0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12dc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12dd0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12de0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12df0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12e00 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
12e10 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e  sult_zeroblob(In
12e20 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
12e30 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
12e40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12e50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12e60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12e70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12e80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12e90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12ea0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12eb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12ec0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12ed0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12ee0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
12ef0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
12f00 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  _int(IntPtr cont
12f10 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  ext, int value);
12f20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12f30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12f40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12f50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12f60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12f70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12f80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
12f90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12fa0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
12fb0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
12fc0 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  64(IntPtr contex
12fd0 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  t, long value);.
12fe0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
12ff0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13000 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13010 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13020 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13030 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13040 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13050 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13060 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13070 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13080 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13090 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
130a0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
130b0 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  null(IntPtr cont
130c0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
130d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
130e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
130f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13100 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13110 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13120 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13130 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13140 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13150 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13160 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13170 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13180 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
13190 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
131a0 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
131b0 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
131c0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
131d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
131e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
131f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13200 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13210 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13220 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13230 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13240 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13250 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13260 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13270 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13280 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13290 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74  3_aggregate_cont
132a0 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
132b0 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  xt, int nBytes);
132c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
132d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
132e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
132f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13300 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13310 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13320 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
13330 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
13340 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
13350 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13360 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
13370 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
13380 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
13390 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
133a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
133b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
133c0 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49  e3_bind_text16(I
133d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
133e0 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
133f0 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
13400 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
13410 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13420 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13430 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13440 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13460 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13470 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
13480 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
13490 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
134a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
134b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
134c0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
134d0 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
134e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
134f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
13500 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
13510 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20  _error16(IntPtr 
13520 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
13530 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
13540 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
13550 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13560 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13570 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13580 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13590 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
135a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
135b0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
135c0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
135d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
135e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
135f0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
13600 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
13610 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13620 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
13630 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
13640 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  t_text16(IntPtr 
13650 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
13660 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
13670 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
13680 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  rved);....#if IN
13690 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49  TEROP_CODEC || I
136a0 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53  NTEROP_INCLUDE_S
136b0 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  EE..#if !PLATFOR
136c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
136d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
136e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
136f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13700 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13710 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13720 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13730 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13740 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13750 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13760 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
13770 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79  Code sqlite3_key
13780 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
13790 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
137a0 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
137b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
137c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
137d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
137e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
137f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13800 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13810 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13830 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13840 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13850 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13860 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13870 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62  _rekey(IntPtr db
13880 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
13890 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64  t keylen);..#end
138a0 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  if....#if INTERO
138b0 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53  P_INCLUDE_ZIPVFS
138c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
138d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
138e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
138f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13900 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13910 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13920 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13930 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13940 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13950 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13960 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13970 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e  rn void zipvfsIn
13980 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20  it_v2();....#if 
13990 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
139a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
139b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
139c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
139d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
139e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
139f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13a00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13a10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13a20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13a30 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
13a40 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28  d zipvfsInit_v3(
13a50 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23  int regDflt);..#
13a60 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
13a70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13a80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13a90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13aa0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13ab0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13ac0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13ad0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13ae0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13af0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13b00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13b10 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13b20 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
13b30 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64  handler(IntPtr d
13b40 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69  b, int ops, SQLi
13b50 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61  teProgressCallba
13b60 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
13b70 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
13b80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13b90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13ba0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13bb0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13bc0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13bd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13be0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13bf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13c00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13c10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13c20 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
13c30 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  Ptr sqlite3_set_
13c40 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74  authorizer(IntPt
13c50 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68  r db, SQLiteAuth
13c60 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66  orizerCallback f
13c70 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
13c80 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
13c90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13ca0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13cb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13cc0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13cd0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13ce0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13cf0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13d00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13d10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13d20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13d30 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13d40 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
13d50 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
13d60 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
13d70 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
13d80 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
13d90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13da0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13db0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13dc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13dd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13de0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13df0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13e00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13e10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13e20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13e30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
13e40 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
13e50 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
13e60 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
13e70 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
13e80 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
13e90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13ea0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13eb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13ec0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13ed0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13ee0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13ef0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13f00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13f10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13f20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13f30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13f40 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13f50 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
13f60 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
13f70 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
13f80 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
13f90 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
13fa0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
13fb0 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
13fc0 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
13fd0 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
13fe0 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
13ff0 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
14000 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
14010 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
14020 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
14030 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14040 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14050 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
14060 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
14070 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
14080 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14090 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
140a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
140b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
140c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
140d0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
140e0 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
140f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14100 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14110 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14120 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
14130 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
14140 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
14150 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14160 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14170 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
14190 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
141a0 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
141b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
141c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
141d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
141e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
141f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
14200 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
14210 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
14220 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14230 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14240 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
14250 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
14260 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
14270 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
14280 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
14290 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
142a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
142b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
142c0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
142d0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
142e0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
142f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14300 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14310 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14320 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14330 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
14340 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
14350 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
14360 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14370 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14380 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14390 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
143a0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
143b0 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
143c0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
143d0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
143e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
143f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14400 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14410 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14420 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14430 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14440 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14450 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14460 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14470 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14480 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14490 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
144a0 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49  _rollback_hook(I
144b0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
144c0 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b  RollbackCallback
144d0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
144e0 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
144f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14510 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14520 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14530 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14540 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14550 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14560 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14570 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14580 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14590 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
145a0 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e  r sqlite3_db_han
145b0 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29  dle(IntPtr stmt)
145c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
145d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
145e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
145f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14600 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14610 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14620 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14630 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14640 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14650 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14660 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14670 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
14680 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
14690 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
146a0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
146b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
146c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
146d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
146e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
146f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14700 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14710 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14720 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14730 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14740 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14750 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14760 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
14770 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74  b_filename(IntPt
14780 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e  r db, IntPtr dbN
14790 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
147a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
147b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
147c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
147d0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
147e0 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
147f0 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43  ename", CallingC
14800 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14810 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14820 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14830 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14840 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
14850 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
14860 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23  b_filename")]..#
14870 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14880 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14890 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
148a0 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74  _db_filename_byt
148b0 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  es(IntPtr db, by
148c0 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d  te[] dbName);...
148d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
148e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
148f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14900 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14920 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14930 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14960 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14970 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14980 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14990 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74  _next_stmt(IntPt
149a0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d  r db, IntPtr stm
149b0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
149c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
149d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
149e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
149f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14a00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14a10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14a20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14a30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14a40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14a60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14a70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14a80 65 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20  exec(IntPtr db, 
14a90 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49  byte[] strSql, I
14aa0 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b  ntPtr pvCallback
14ab0 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d  , IntPtr pvParam
14ac0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72  , ref IntPtr err
14ad0 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Msg);....#if !PL
14ae0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14af0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14b00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14b10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14b20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14b30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14b40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14b50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14b60 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14b70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14b80 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
14b90 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
14ba0 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29  mory(int nBytes)
14bb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14bc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14bd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14be0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14bf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14c00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14c10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14c20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14c30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14c40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14c60 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14c70 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
14c80 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
14c90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14ca0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14cb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14cc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14cd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14cf0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14d10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14d20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14d30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14d40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14d50 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
14d60 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49  d_result_codes(I
14d70 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e  ntPtr db, int on
14d80 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  off);....#if !PL
14d90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14da0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14db0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14dc0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14dd0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14de0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14df0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14e00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14e10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14e20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14e30 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14e40 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14e50 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  3_errcode(IntPtr
14e60 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
14e70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14e80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14e90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14ea0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14eb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14ec0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14ed0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14ee0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14ef0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14f00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14f10 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14f20 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14f30 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
14f40 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
14f50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14f60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14f70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14f80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14fa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14fb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14fc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14fd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14fe0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14ff0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15000 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
15010 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45  3_errstr(SQLiteE
15020 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a  rrorCode rc); /*
15030 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20   3.7.15+ */.... 
15040 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
15050 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20  te3_log() takes 
15060 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
15070 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
15080 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
15090 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
150a0 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
150b0 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20  ble calls.  For 
150c0 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79  now, we are only
150d0 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67   exposing a sing
150e0 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a  le string, and..
150f0 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e      // depend on
15100 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66   the caller to f
15110 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67  ormat the string
15120 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15130 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15140 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15150 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15160 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15170 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15180 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15190 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
151a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
151b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
151c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
151d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
151e0 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72  _log(SQLiteError
151f0 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62  Code iErrCode, b
15200 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d  yte[] zFormat);.
15210 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15220 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15230 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15240 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15250 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15260 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15270 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15280 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15290 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
152a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
152b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
152c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
152d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  ode sqlite3_file
152e0 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20  _control(IntPtr 
152f0 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61  db, byte[] zDbNa
15300 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50  me, int op, IntP
15310 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66  tr pArg);....#if
15320 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15330 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15340 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15350 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15360 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15370 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15380 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15390 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
153a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
153b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
153c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
153d0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63  tPtr sqlite3_bac
153e0 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20  kup_init(IntPtr 
153f0 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a  destDb, byte[] z
15400 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72  DestName, IntPtr
15410 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b   sourceDb, byte[
15420 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ] zSourceName);.
15430 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15440 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15450 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15460 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15470 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15480 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15490 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
154a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
154b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
154c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
154d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
154e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
154f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
15500 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62  up_step(IntPtr b
15510 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65  ackup, int nPage
15520 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15540 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15560 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15570 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15580 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15590 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
155a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
155b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
155c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
155d0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
155e0 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e  e3_backup_remain
155f0 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ing(IntPtr backu
15600 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
15610 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15620 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15630 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15640 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15650 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15660 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15670 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15680 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15690 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
156a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
156b0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
156c0 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63  te3_backup_pagec
156d0 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b  ount(IntPtr back
156e0 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
156f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15700 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15720 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15730 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15740 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15750 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15760 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15770 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15780 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15790 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
157a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
157b0 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e  _declare_vtab(In
157c0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
157d0 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  zSQL);....#if !P
157e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
157f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15800 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15810 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15820 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15830 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15840 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15850 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15860 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15870 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15880 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
15890 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74  r sqlite3_mprint
158a0 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c  f(IntPtr format,
158b0 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20   __arglist);..  
158c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
158d0 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50      // SQLite AP
158e0 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65  I calls that are
158f0 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65   provided by "we
15900 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73  ll-known" extens
15910 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65  ions that may be
15920 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20   statically..   
15930 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20   // linked with 
15940 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
15950 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63  native library c
15960 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e  urrently in use.
15970 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78  ..    #region ex
15980 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61  tension sqlite a
15990 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e  pi calls..#if IN
159a0 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
159b0 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  BLE..#if !PLATFO
159c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
159d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
159e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
159f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15a00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15a10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15a20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15a40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15a50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15a60 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15a70 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
15a80 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e  osable_module(In
15a90 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
15aa0 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65  name, ref sqlite
15ab0 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  3_module module,
15ac0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
15ad0 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64  ata, xDestroyMod
15ae0 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a  ule xDestroy);..
15af0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15b00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15b10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15b20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15b30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15b40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15b50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15b60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15b70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15b80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15b90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15ba0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
15bb0 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49  dispose_module(I
15bc0 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d  ntPtr pModule);.
15bd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
15be0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15c40 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65    #region sqlite
15c50 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c   interop api cal
15c60 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74  ls (.NET Compact
15c70 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29   Framework only)
15c80 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
15c90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
15ca0 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
15cb0 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ARD..    [DllImp
15cc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15cd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15ce0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15cf0 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  d sqlite3_last_i
15d00 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65  nsert_rowid_inte
15d10 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
15d20 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  ef long rowId);.
15d30 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15d40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15d50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15d60 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
15d70 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
15d80 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20  sed_interop(ref 
15d90 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
15da0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15db0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15dc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15dd0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
15de0 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
15df0 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e  water_interop(in
15e00 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66  t resetFlag, ref
15e10 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
15e20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15e30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15e40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15e50 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15e60 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15e70 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74  _bind_double_int
15e80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
15e90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
15ea0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
15eb0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15ec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15ed0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15ee0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15ef0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15f00 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
15f10 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
15f20 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
15f30 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
15f40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15f50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
15f60 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
15f70 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
15f80 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e  terop")]..    in
15f90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15fa0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
15fb0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
15fc0 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  d_uint64_interop
15fd0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
15fe0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f  t index, ref ulo
15ff0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
16000 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16010 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
16020 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16030 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
16040 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65  e3_column_double
16050 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
16060 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
16070 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
16080 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
16090 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
160a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
160b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
160c0 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
160d0 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  mn_int64_interop
160e0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
160f0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
16100 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
16110 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16120 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
16130 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16140 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
16150 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69  3_value_double_i
16160 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
16170 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
16180 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
16190 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
161a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
161b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
161c0 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
161d0 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  e_int64_interop(
161e0 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49 6e  IntPtr p, ref In
161f0 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
16200 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16210 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
16220 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16230 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
16240 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
16250 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
16260 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f   context, ref do
16270 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
16280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16290 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
162a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
162b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
162c0 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
162d0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
162e0 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e   context, ref In
162f0 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
16300 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16310 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
16320 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16330 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16340 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
16350 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69  posable_module_i
16360 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20  nterop(..       
16370 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50   IntPtr db, IntP
16380 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20  tr name, IntPtr 
16390 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65  pModule, int iVe
163a0 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78  rsion, xCreate x
163b0 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Create,..       
163c0 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
163d0 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78  ct, xBestIndex x
163e0 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63  BestIndex, xDisc
163f0 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
16400 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65  ct,..        xDe
16410 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20  stroy xDestroy, 
16420 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c  xOpen xOpen, xCl
16430 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c  ose xClose, xFil
16440 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20  ter xFilter,..  
16450 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78        xNext xNex
16460 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43  t, xEof xEof, xC
16470 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78  olumn xColumn, x
16480 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55  RowId xRowId, xU
16490 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a  pdate xUpdate,..
164a0 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78          xBegin x
164b0 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79  Begin, xSync xSy
164c0 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  nc, xCommit xCom
164d0 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78  mit, xRollback x
164e0 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Rollback,..     
164f0 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e     xFindFunction
16500 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20   xFindFunction, 
16510 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c  xRename xRename,
16520 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76   xSavepoint xSav
16530 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  epoint,..       
16540 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61   xRelease xRelea
16550 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  se, xRollbackTo 
16560 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74  xRollbackTo, Int
16570 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
16580 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72  ..        xDestr
16590 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f  oyModule xDestro
165a0 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69  yModule);..#endi
165b0 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f  f..    // PLATFO
165c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
165d0 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
165e0 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e  TANDARD..    #en
165f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16650 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
16660 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20   Delegates..#if 
16670 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
16680 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54  TABLE..#if !PLAT
16690 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
166a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
166b0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
166c0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
166d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
166e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
166f0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16700 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65  teErrorCode xCre
16710 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ate(..        In
16720 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
16730 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
16740 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
16750 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
16760 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
16770 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
16780 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
16790 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
167a0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
167b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
16800 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16810 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16820 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16830 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16850 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16860 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16870 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16880 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e xConnect(..   
16890 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
168a0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
168b0 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
168c0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
168d0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
168e0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
168f0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
16900 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
16910 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
16920 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16970 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16980 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16990 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
169a0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
169b0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
169c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
169d0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
169e0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
169f0 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e  rrorCode xBestIn
16a00 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  dex(..        In
16a10 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
16a20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
16a30 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
16a40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16a90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16aa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16ab0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16ac0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16ad0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16ae0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16af0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16b00 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
16b10 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63  rCode xDisconnec
16b20 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
16b30 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
16b40 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
16ba0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16bb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
16bc0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
16bd0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
16be0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16bf0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16c00 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16c10 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73  teErrorCode xDes
16c20 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49  troy(..        I
16c30 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
16c40 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
16ca0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16cb0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
16cc0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
16cd0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
16ce0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16cf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
16d00 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
16d10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16d20 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  Open(..        I
16d30 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
16d40 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
16d50 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
16d60 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16db0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
16dc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16dd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
16de0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
16df0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
16e00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16e10 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16e20 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16e30 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f  teErrorCode xClo
16e40 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  se(..        Int
16e50 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
16e60 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f  ////////////////
16eb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
16ec0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16ed0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
16ee0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
16ef0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
16f00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16f10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
16f20 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
16f30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16f40 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
16f50 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
16f60 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64  ..        int id
16f70 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49  xNum,..        I
16f80 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
16f90 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
16fa0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16fb0 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d   argv..    );...
16fc0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17010 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17020 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17030 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
17040 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
17050 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
17060 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
17070 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
17080 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
17090 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d  rrorCode xNext(.
170a0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
170b0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
170c0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17110 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
17120 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17130 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
17140 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
17150 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17160 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17170 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17180 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
17190 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  Eof(..        In
171a0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
171b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
17210 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17220 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17230 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
17240 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
17250 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17260 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17270 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
17280 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17290 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
172a0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
172b0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
172c0 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20  r pContext,..   
172d0 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a       int index..
172e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
172f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17330 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
17340 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17350 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17360 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
17370 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
17380 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17390 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
173a0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
173b0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
173c0 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  e xRowId(..     
173d0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
173e0 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  r,..        ref 
173f0 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
17400 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17450 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
17460 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17470 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
17480 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
17490 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
174a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
174b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
174c0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
174d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
174e0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
174f0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
17500 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
17510 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
17520 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
17530 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
17540 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17590 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
175a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
175b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
175c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
175d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
175e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
175f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
17600 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
17610 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
17620 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20  e xBegin(..     
17630 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
17640 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
17650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
176a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
176b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
176c0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
176d0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
176e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
176f0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
17700 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
17710 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
17720 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
17730 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
17740 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
177a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
177b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
177c0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
177d0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
177e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
177f0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
17800 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
17810 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
17820 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  de xCommit(..   
17830 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
17840 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
17850 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
178a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
178b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
178c0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
178d0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
178e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
178f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17900 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17910 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17920 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d  Code xRollback(.
17930 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
17940 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
17950 0a 20 20 20 20 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 2f 2f  ////////////////
179a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
179b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
179c0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
179d0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
179e0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
179f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
17a00 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
17a10 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69  delegate int xFi
17a20 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
17a30 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
17a40 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
17a50 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49  nArg,..        I
17a60 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20  ntPtr zName,..  
17a70 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
17a80 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63  Callback callbac
17a90 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  k,..        ref 
17aa0 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61  IntPtr pUserData
17ab0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
17ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
17b10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17b20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17b30 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
17b40 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
17b50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17b60 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
17b70 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
17b80 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
17b90 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20  ode xRename(..  
17ba0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
17bb0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ab,..        Int
17bc0 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b  Ptr zNew..    );
17bd0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
17c30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17c40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
17c50 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
17c60 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
17c70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17c80 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
17c90 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
17ca0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76  teErrorCode xSav
17cb0 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
17cc0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
17cd0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
17ce0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
17cf0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d40 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
17d50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17d60 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
17d70 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
17d80 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
17d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17da0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
17db0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
17dc0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
17dd0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  se(..        Int
17de0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
17df0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
17e00 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
17e10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17e60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17e70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17e80 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
17e90 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
17ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17eb0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
17ec0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
17ed0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
17ee0 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54  rCode xRollbackT
17ef0 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  o(..        IntP
17f00 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
17f10 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
17f20 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
17f30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17f80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17f90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17fa0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
17fb0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
17fc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17fd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17fe0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17ff0 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72  gate void xDestr
18000 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  oyModule(IntPtr 
18010 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23  pClientData);..#
18020 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
18030 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18080 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18090 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53  #region Native S
180a0 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49  tructures..#if I
180b0 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
180c0 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63  ABLE..    [Struc
180d0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
180e0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
180f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18100 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64  ruct sqlite3_mod
18110 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ule..    {..    
18120 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
18130 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
18140 20 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65    public xCreate
18150 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20   xCreate;..     
18160 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65     public xConne
18170 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20  ct xConnect;..  
18180 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
18190 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64  stIndex xBestInd
181a0 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ex;..        pub
181b0 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  lic xDisconnect 
181c0 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20  xDisconnect;..  
181d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65        public xDe
181e0 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d  stroy xDestroy;.
181f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18200 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20  xOpen xOpen;..  
18210 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c        public xCl
18220 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20  ose xClose;..   
18230 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c       public xFil
18240 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20  ter xFilter;..  
18250 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65        public xNe
18260 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20  xt xNext;..     
18270 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78     public xEof x
18280 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  Eof;..        pu
18290 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  blic xColumn xCo
182a0 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  lumn;..        p
182b0 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f  ublic xRowId xRo
182c0 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  wId;..        pu
182d0 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70  blic xUpdate xUp
182e0 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  date;..        p
182f0 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65  ublic xBegin xBe
18300 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  gin;..        pu
18310 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63  blic xSync xSync
18320 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
18330 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69  c xCommit xCommi
18340 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
18350 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f  ic xRollback xRo
18360 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
18370 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e   public xFindFun
18380 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74  ction xFindFunct
18390 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ion;..        pu
183a0 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65  blic xRename xRe
183b0 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  name;..        /
183c0 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62  * The methods ab
183d0 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69  ove are in versi
183e0 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69  on 1 of the sqli
183f0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
18400 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20       * object.  
18410 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20  Those below are 
18420 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e  for version 2 an
18430 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20  d greater. */.. 
18440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53         public xS
18450 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f  avepoint xSavepo
18460 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
18470 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52  blic xRelease xR
18480 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20  elease;..       
18490 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
184a0 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b  kTo xRollbackTo;
184b0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
184c0 2f 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 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18510 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
18520 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
18530 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
18540 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
18550 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b  ite3_vtab..    {
18560 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18570 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b   IntPtr pModule;
18580 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18590 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f   int nRef; /* NO
185a0 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d   LONGER USED */.
185b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
185c0 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d  IntPtr zErrMsg;.
185d0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18630 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
18640 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
18650 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
18660 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
18670 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d  te3_vtab_cursor.
18680 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
18690 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56  public IntPtr pV
186a0 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  Tab;..    }.... 
186b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
186c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18700 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
18710 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
18720 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
18730 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
18740 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
18750 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b  onstraint..    {
18760 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18770 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
18780 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20  onstraint(..    
18790 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
187a0 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f  dexConstraint co
187b0 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20  nstraint..      
187c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
187d0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
187e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
187f0 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
18800 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  aint != null).. 
18810 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
18830 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69  olumn = constrai
18840 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt.iColumn;..   
18850 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20               op 
18860 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b  = constraint.op;
18870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18880 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74    usable = const
18890 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20  raint.usable;.. 
188a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
188b0 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e  TermOffset = con
188c0 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66  straint.iTermOff
188d0 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  set;..          
188e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
188f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18940 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
18950 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
18960 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18970 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
18980 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20  traintOp op;..  
18990 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
189a0 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20  e usable;..     
189b0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54     public int iT
189c0 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
189d0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
189e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
18a30 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
18a40 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
18a50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18a60 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
18a70 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20  ndex_orderby..  
18a80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
18a90 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
18aa0 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20  x_orderby(..    
18ab0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
18ac0 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72  dexOrderBy order
18ad0 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  By..            
18ae0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
18af0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
18b00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18b10 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e  if (orderBy != n
18b20 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
18b30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18b40 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f       iColumn = o
18b50 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d  rderBy.iColumn;.
18b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18b70 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e   desc = orderBy.
18b80 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20  desc;..         
18b90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
18ba0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
18c00 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e  blic int iColumn
18c10 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62  ; /* Column numb
18c20 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  er */..        p
18c30 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b  ublic byte desc;
18c40 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44     /* True for D
18c50 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
18c60 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ASC. */..    }..
18c70 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
18c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cc0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
18cd0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
18ce0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
18cf0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
18d00 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
18d10 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
18d20 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ge..    {..     
18d30 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
18d40 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
18d50 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20  nt_usage(..     
18d60 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
18d70 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
18d80 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
18d90 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
18da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
18db0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
18dc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
18dd0 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  f (constraintUsa
18de0 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ge != null)..   
18df0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18e00 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76              argv
18e10 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69  Index = constrai
18e20 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65  ntUsage.argvInde
18e30 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x;..            
18e40 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74      omit = const
18e50 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b  raintUsage.omit;
18e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
18e70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
18e80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18ed0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18ee0 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f  int argvIndex; /
18ef0 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61  * if >0, constra
18f00 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61  int is part of a
18f10 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a  rgv to xFilter *
18f20 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
18f30 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20  c byte omit;    
18f40 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20   /* Do not code 
18f50 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20  a test for this 
18f60 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  constraint */.. 
18f70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
18fd0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
18fe0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
18ff0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
19000 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
19010 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20  3_index_info..  
19020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20    {..        /* 
19030 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  Inputs */..     
19040 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43     public int nC
19050 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75  onstraint; /* Nu
19060 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
19070 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a  in aConstraint *
19080 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
19090 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
190a0 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  aint;..        p
190b0 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72  ublic int nOrder
190c0 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72  By;    /* Number
190d0 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
190e0 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20  OrderBy */..    
190f0 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
19100 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20  r aOrderBy;..   
19110 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20       /* Outputs 
19120 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
19130 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
19140 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
19150 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
19160 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20  idxNum;         
19170 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64    /* Number used
19180 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65   to identify the
19190 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
191a0 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
191b0 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20 20   idxStr;        
191c0 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
191d0 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
191e0 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  m sqlite3_malloc
191f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
19200 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72  lic int needToFr
19210 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65  eeIdxStr; /* Fre
19220 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20 73  e idxStr using s
19230 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 66  qlite3_free() if
19240 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20   true */..      
19250 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64    public int ord
19260 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f  erByConsumed;  /
19270 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
19280 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
19290 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
192a0 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73  public double es
192b0 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20  timatedCost; /* 
192c0 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f  Estimated cost o
192d0 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64  f using this ind
192e0 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ex */..        p
192f0 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d  ublic long estim
19300 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45  atedRows;   /* E
19310 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20  stimated number 
19320 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64  of rows returned
19330 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
19340 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46  lic SQLiteIndexF
19350 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20 2f  lags idxFlags; /
19360 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54 45  * Mask of SQLITE
19370 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c  _INDEX_SCAN_* fl
19380 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ags */..        
19390 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55  public long colU
193a0 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f 2a 20  sed;         /* 
193b0 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63  Input: Mask of c
193c0 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79 20 73  olumns used by s
193d0 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20  tatement */..   
193e0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
193f0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
19400 0a 0d 0a 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19450 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
19460 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19470 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
19480 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
19490 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
194a0 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
194b0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
194c0 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
194d0 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
194e0 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
194f0 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
19500 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
19510 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
19520 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
19530 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
19540 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
19550 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
19560 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
19570 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
19580 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
19590 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
195a0 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
195b0 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
195c0 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
195d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
195e0 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
195f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
19600 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
19610 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
19620 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
19630 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19640 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
19650 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
19660 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
19670 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
19680 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
19690 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
196a0 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
196b0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
196c0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
196d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
196e0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
196f0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
19700 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
19710 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
19720 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
19730 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
19740 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
19750 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
19760 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
19770 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
19780 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
19790 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
197a0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
197b0 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
197c0 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
197d0 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
197e0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
197f0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
19800 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
19810 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
19820 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
19830 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
19840 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
19850 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
19860 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
19870 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
19880 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
19890 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
198a0 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
198b0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
198c0 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
198d0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
198e0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
198f0 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  }....#endif.... 
19900 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19950 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
19960 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
19970 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
19980 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75  // Handles the u
19990 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73  nmanaged databas
199a0 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70  e pointer, and p
199b0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
199c0 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70  tion..    // sup
199d0 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20  port for it...  
199e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
199f0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f  d class SQLiteCo
19a00 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a  nnectionHandle :
19a10 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
19a20 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49  .    {..#if SQLI
19a30 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21  TE_STANDARD && !
19a40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19a50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19a60 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
19a70 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43  gate void CloseC
19a80 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
19a90 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
19aa0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
19ab0 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
19ac0 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  tr db);....     
19ad0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19ae0 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  ic CloseConnecti
19af0 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65  onCallback close
19b00 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20  Connection =..  
19b10 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
19b20 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
19b30 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
19b40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
19b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b90 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
19ba0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19bb0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
19bc0 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
19bd0 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
19be0 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
19bf0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19c50 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
19c60 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  ownHandle;....  
19c70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19cc0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
19cd0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
19ce0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
19cf0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
19d00 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20  Handle db)..    
19d10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19d20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c     if (db != nul
19d30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19d40 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
19d50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19d70 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52    lock (db.syncR
19d80 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
19d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
19da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19db0 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68       return db.h
19dc0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
19dd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19de0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19df0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
19e00 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
19e10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19e70 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
19e80 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
19e90 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f  le(IntPtr db, bo
19ea0 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
19eb0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
19ec0 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  s(ownHandle)..  
19ed0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
19ee0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19ef0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
19f00 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
19f10 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
19f20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19f30 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
19f40 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e  .ownHandle = own
19f50 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
19f60 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
19f70 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20  le(db);..       
19f80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19f90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fe0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19ff0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
1a000 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62  nnectionHandle(b
1a010 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
1a020 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
1a030 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
1a040 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1a050 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1a060 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77            if (ow
1a070 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
1a080 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1a090 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
1a0a0 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
1a0b0 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69  Methods.connecti
1a0c0 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
1a0d0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1a0e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a130 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
1a140 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
1a150 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1a160 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1a170 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a180 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a190 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1a1a0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1a1b0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1a1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a1d0 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
1a1e0 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1a200 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1a210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a220 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a230 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a250 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1a260 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1a270 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a290 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1a2a0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
1a2b0 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
1a2c0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
1a2d0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1a2e0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1a2f0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1a300 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
1a310 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
1a320 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
1a330 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1a340 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
1a350 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1a360 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1a370 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1a380 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
1a390 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
1a3a0 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
1a3b0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
1a3c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1a3d0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1a3e0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1a3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a410 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1a420 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69 76 65  ine(UnsafeNative
1a430 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
1a440 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
1a460 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
1a470 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
1a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a490 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63      "CloseConnec
1a4a0 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  tion: {0}", loca
1a4b0 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
1a4c0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1a4d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a4e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1a4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a500 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a510 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1a520 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1a530 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a540 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1a550 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a570 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
1a580 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1a590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a5b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1a5c0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
1a5d0 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c  tion(this, handl
1a5e0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1a600 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
1a610 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
1a620 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a630 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a640 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
1a650 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1a660 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1a670 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1a680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a690 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1a6a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
1a6b0 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
1a6c0 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
1a6d0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1a6e0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1a6f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1a700 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
1a710 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1a720 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1a730 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1a740 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1a750 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1a760 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1a770 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
1a780 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1a790 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1a7a0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1a7b0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1a7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a7e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a7f0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1a800 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e  riteLine(UnsafeN
1a810 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
1a820 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1a830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a840 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1a850 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1a860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a870 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
1a880 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20  onnection: {0}, 
1a890 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1a8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a8b0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1a8c0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1a8d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1a8e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a8f0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1a900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a920 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1a930 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a940 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1a950 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1a960 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a970 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1a990 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1a9a0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1a9b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1a9d0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1a9e0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1a9f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1aa00 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1aa10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1aa20 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1aa30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1aa40 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1aa50 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1aa60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aab0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1aac0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1aad0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1aae0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1aaf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ab00 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1ab10 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1ab20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ab30 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1ab40 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
1ab50 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  tionCount);..   
1ab60 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1ab70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abc0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1abd0 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64  lic bool OwnHand
1abe0 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
1abf0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
1ac00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1ac10 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1ac20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ac30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1ac40 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1ac50 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1ac60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ac80 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  turn ownHandle;.
1ac90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aca0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1acb0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1acc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ad10 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1ad20 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
1ad30 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
1ad40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ad50 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
1ad60 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1ad70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ad80 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1ad90 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1ada0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1adc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1add0 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
1ade0 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
1adf0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
1ae00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ae10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ae20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
1ae80 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
1ae90 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
1aea0 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
1aeb0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1aec0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1aed0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1aee0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1aef0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1af00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1af10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1af20 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
1af30 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
1af40 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1af50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
1af60 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1af70 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1afd0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1afe0 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
1aff0 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
1b000 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
1b010 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
1b020 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e   SQLite statemen
1b030 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ts...    interna
1b040 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
1b050 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
1b060 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
1b070 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
1b080 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1b090 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b0a0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
1b0b0 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
1b0c0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1b0d0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
1b0e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
1b140 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
1b150 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
1b160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1b1c0 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
1b1d0 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
1b1e0 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61 74  ntPtr(SQLiteStat
1b1f0 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74  ementHandle stmt
1b200 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1b210 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1b220 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  mt != null)..   
1b230 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1b240 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b250 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1b260 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1b270 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d  (stmt.syncRoot).
1b280 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1b290 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2b0 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64  return stmt.hand
1b2c0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1b2d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1b2e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b2f0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1b300 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
1b310 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b370 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53  internal SQLiteS
1b380 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53  tatementHandle(S
1b390 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1b3a0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
1b3b0 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  r stmt)..       
1b3c0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
1b3d0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1b3e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b3f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1b400 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1b410 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1b420 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1b440 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1b460 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a  tHandle(stmt);..
1b470 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1b480 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1b490 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b4e0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
1b4f0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
1b500 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
1b510 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
1b520 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1b530 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
1b540 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1b550 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
1b560 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
1b570 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1b580 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b590 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  s.statementCount
1b5a0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1b5b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b5c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b610 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1b620 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1b630 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1b640 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b650 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1b660 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
1b670 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b680 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1b690 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
1b6a0 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
1b6b0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
1b6c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1b6d0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
1b6e0 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
1b6f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b700 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
1b710 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1b720 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1b730 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b740 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61  Base.FinalizeSta
1b750 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61  tement(cnn, loca
1b760 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
1b770 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1b780 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1b790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b7a0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1b7b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1b7d0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e  ace.WriteLine(Un
1b7e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b7f0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1b800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b810 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1b820 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1b830 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1b850 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1b860 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
1b870 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
1b880 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b890 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b8a0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b8d0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
1b8e0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1b8f0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1b900 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1b910 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b920 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
1b930 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1b940 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1b950 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b970 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1b980 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
1b990 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  nt(cnn, handle);
1b9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b9b0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1b9c0 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
1b9d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b9e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b9f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1ba00 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
1ba10 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1ba20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
1ba30 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
1ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba50 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1ba60 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
1ba70 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
1ba80 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
1ba90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1baa0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1bab0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1bac0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
1bad0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1bae0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1baf0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1bb00 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
1bb10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1bb20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1bb30 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
1bb40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1bb50 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1bb60 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1bb70 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1bb80 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1bba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bbb0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1bbc0 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69 76  Line(UnsafeNativ
1bbd0 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  eMethods.StringF
1bbe0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1bbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc00 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1bc10 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc30 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
1bc40 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
1bc50 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
1bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc70 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
1bc80 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1bc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bca0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1bcb0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1bce0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1bcf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1bd00 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
1bd10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1bd20 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1bd30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bd40 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1bd50 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1bd60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1bd70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bd80 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1bd90 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
1bda0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bdb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1bdc0 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
1bdd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bde0 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
1bdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1be00 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
1be10 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
1be20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be70 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
1be80 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
1be90 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
1bea0 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
1beb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bec0 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
1bed0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
1bee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bef0 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
1bf00 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e  Methods.statemen
1bf10 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  tCount);..      
1bf20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
1bf30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1bf80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1bf90 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
1bfa0 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
1bfb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bfc0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
1bfd0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1bfe0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1bff0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1c000 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1c010 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c040 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
1c050 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
1c060 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
1c070 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c080 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1c090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
1c0f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c100 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
1c110 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
1c120 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1c130 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c140 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1c150 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1c160 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1c170 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c180 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1c190 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
1c1a0 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
1c1b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1c1c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
1c1d0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1c1e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1c1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c230 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1c240 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
1c250 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
1c260 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   Provides finali
1c270 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66  zation support f
1c280 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c  or unmanaged SQL
1c290 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  ite backup objec
1c2a0 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ts...    interna
1c2b0 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
1c2c0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
1c2d0 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
1c2e0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
1c2f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c300 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1c310 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
1c320 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
1c330 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
1c340 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
1c350 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c3a0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1c3b0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
1c3c0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
1c3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1c3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c420 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1c430 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
1c440 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
1c450 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48  tr(SQLiteBackupH
1c460 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20  andle backup).. 
1c470 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c480 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75 70        if (backup
1c490 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1c4a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1c4b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c4c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1c4d0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62           lock (b
1c4e0 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d  ackup.syncRoot).
1c4f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c500 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c520 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61  return backup.ha
1c530 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
1c540 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c550 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c560 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1c570 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
1c580 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1c590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c5e0 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
1c5f0 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51  eBackupHandle(SQ
1c600 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1c610 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72  ndle cnn, IntPtr
1c620 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20   backup)..      
1c630 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
1c640 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1c650 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c660 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1c670 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1c680 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1c690 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1c6b0 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
1c6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1c6d0 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29  etHandle(backup)
1c6e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1c6f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1c700 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c750 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1c760 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  e SQLiteBackupHa
1c770 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
1c780 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
1c790 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1c7a0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
1c7b0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1c7c0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
1c7d0 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
1c7e0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1c7f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1c800 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
1c810 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c820 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c880 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
1c890 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
1c8a0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
1c8b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c8c0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1c8d0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
1c8e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c8f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1c900 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
1c910 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
1c920 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
1c930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c940 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
1c950 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
1c960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c970 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
1c980 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1c990 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1c9a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
1c9b0 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
1c9c0 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
1c9d0 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
1c9e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1c9f0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1ca00 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ca20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ca30 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
1ca40 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69  eLine(UnsafeNati
1ca50 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  veMethods.String
1ca60 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca80 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1ca90 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cab0 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63        "FinishBac
1cac0 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  kup: {0}", local
1cad0 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
1cae0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
1caf0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1cb00 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
1cb10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cb20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1cb30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1cb40 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1cb50 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1cb60 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1cb70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1cb90 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
1cba0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1cbc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cbd0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1cbe0 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
1cbf0 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
1cc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc10 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1cc20 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
1cc30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cc40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1cc50 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1cc60 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
1cc70 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1cc80 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
1cc90 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
1cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccb0 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
1ccc0 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43  eMethods.backupC
1ccd0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
1cce0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1ccf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1cd00 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
1cd10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1cd20 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1cd30 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1cd40 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1cd50 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1cd60 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
1cd70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
1cd80 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1cd90 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
1cda0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1cdb0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1cdc0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1cdd0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1cde0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1cdf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce10 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1ce20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1ce30 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1ce40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1ce50 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1ce60 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1ce70 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce90 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
1cea0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
1ceb0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
1ced0 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
1cee0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1cef0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1cf00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1cf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cf20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cf30 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1cf50 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
1cf60 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
1cf70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1cf80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cfa0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1cfb0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1cfc0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1cfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfe0 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
1cff0 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
1d000 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1d010 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
1d020 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1d030 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1d040 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1d050 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1d060 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1d070 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
1d0d0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1d0e0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
1d0f0 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
1d100 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d110 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1d120 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1d130 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1d140 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1d150 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61  NativeMethods.ba
1d160 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
1d170 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1d180 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1d1e0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
1d1f0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
1d200 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d210 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1d220 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1d230 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d240 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1d250 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1d260 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1d290 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
1d2a0 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1d2b0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1d2c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d2d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1d2e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d330 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
1d340 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
1d350 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
1d360 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
1d370 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1d380 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d390 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1d3a0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1d3b0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1d3c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1d3e0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
1d3f0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
1d400 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1d410 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
1d420 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1d430 0d 0a 7d 0d 0a                                   ..}..