System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2f91257d6bda3568400c806ed2ce866df8ceef94:


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: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
63a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
63b0: 20 20 20 20 20 20 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 2f  ////////////////
63e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6400: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6410: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6420: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
6430: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
6440: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
6450: 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20  e Unix dlopen.. 
6460: 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
6470: 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f 53 49  n.  See the POSI
6480: 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  X documentation 
6490: 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73  for full details
64a0: 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20   on what it..   
64b0: 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20     /// does...  
64c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
64d0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
64e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
64f0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
6500: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
6510: 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72   executable libr
6520: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
6530: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6540: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6550: 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "mode">..      /
6560: 2f 2f 20 54 68 69 73 20 6d 75 73 74 20 62 65 20  // This must be 
6570: 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  a combination of
6580: 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20   the individual 
6590: 62 69 74 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c  bit flags RTLD_L
65a0: 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  AZY,..      /// 
65b0: 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47  RTLD_NOW, RTLD_G
65c0: 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54  LOBAL, and/or RT
65d0: 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20  LD_LOCAL...     
65e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
65f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
6600: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
6610: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
6620: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
6630: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
6640: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
6650: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6660: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44  turns>..      [D
6670: 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65  llImport("__Inte
6680: 72 6e 61 6c 22 2c 20 45 6e 74 72 79 50 6f 69 6e  rnal", EntryPoin
6690: 74 20 3d 20 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20  t = "dlopen",.. 
66a0: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
66b0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
66c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
66d0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
66e0: 43 68 61 72 53 65 74 2e 41 6e 73 69 2c 0d 0a 20  CharSet.Ansi,.. 
66f0: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
6700: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
6710: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
6720: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
6730: 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73            SetLas
6740: 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d  tError = true)].
6750: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
6760: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6770: 50 74 72 20 64 6c 6f 70 65 6e 28 73 74 72 69 6e  Ptr dlopen(strin
6780: 67 20 66 69 6c 65 4e 61 6d 65 2c 20 69 6e 74 20  g fileName, int 
6790: 6d 6f 64 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mode);....      
67a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
67f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6800: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
6810: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
6820: 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63   bind function c
6830: 61 6c 6c 73 20 6c 61 7a 69 6c 79 2e 0d 0a 20 20  alls lazily...  
6840: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6850: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
6860: 65 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  e const int RTLD
6870: 5f 4c 41 5a 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a  _LAZY = 0x1;....
6880: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
68d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
68e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
68f0: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
6900: 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63  pen(), bind func
6910: 74 69 6f 6e 20 63 61 6c 6c 73 20 69 6d 6d 65 64  tion calls immed
6920: 69 61 74 65 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  iately...      /
6930: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6940: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
6950: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20  st int RTLD_NOW 
6960: 3d 20 30 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20  = 0x2;....      
6970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
69c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
69d0: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
69e0: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
69f0: 20 6d 61 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c   make symbols gl
6a00: 6f 62 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65  obally available
6a10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6a20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
6a30: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
6a40: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30   RTLD_GLOBAL = 0
6a50: 78 31 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  x100;....      /
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6ab0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6ac0: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
6ad0: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
6ae0: 6f 70 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44  opposite of RTLD
6af0: 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65  _GLOBAL, and the
6b00: 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20   default...     
6b10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b20: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
6b30: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f  onst int RTLD_LO
6b40: 43 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a  CAL = 0x000;....
6b50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6ba0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6bb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6bc0: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
6bd0: 70 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75  pen(), the defau
6be0: 6c 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73  lts used by this
6bf0: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
6c00: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6c10: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
6c20: 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46 41  st int RTLD_DEFA
6c30: 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c  ULT = RTLD_NOW |
6c40: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 23   RTLD_GLOBAL;..#
6c50: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
6c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
6cb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6cc0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
6cd0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6ce0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
6cf0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
6d00: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
6d10: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
6d20: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
6d30: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
6d40: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
6d50: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
6d60: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
6d70: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
6d80: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
6d90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6da0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6db0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
6dc0: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
6dd0: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
6de0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
6df0: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
6e00: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
6e10: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
6e20: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
6e30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72   [DllImport("cor
6e40: 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  edll", CallingCo
6e50: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6e60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e  ngConvention.Win
6e70: 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 70 72 69  api)]..      pri
6e80: 76 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65  vate static exte
6e90: 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74 65  rn void GetSyste
6ea0: 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45 4d  mInfo(out SYSTEM
6eb0: 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f  _INFO systemInfo
6ec0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6f20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6f30: 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 65    /// This enume
6f40: 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20  ration contains 
6f50: 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61 6c  the possible val
6f60: 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f 63  ues for the proc
6f70: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  essor..      ///
6f80: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69   architecture fi
6f90: 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74 65  eld of the syste
6fa0: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74  m information st
6fb0: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
6fc0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6fd0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 65 6e        private en
6fe0: 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68  um ProcessorArch
6ff0: 69 74 65 63 74 75 72 65 20 3a 20 75 73 68 6f 72  itecture : ushor
7000: 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69 6e  t /* COMPAT: Win
7010: 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b 0d  32. */..      {.
7020: 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 6c  .          Intel
7030: 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 0,..         
7040: 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20 20   MIPS = 1,..    
7050: 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20 32 2c        Alpha = 2,
7060: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f 77 65  ..          Powe
7070: 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20 20  rPC = 3,..      
7080: 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20 20      SHx = 4,..  
7090: 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20 35 2c          ARM = 5,
70a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 36 34  ..          IA64
70b0: 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 6,..         
70c0: 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a 20   Alpha64 = 7,.. 
70d0: 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20 3d 20           MSIL = 
70e0: 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 4d  8,..          AM
70f0: 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20 20  D64 = 9,..      
7100: 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e 36      IA32_on_Win6
7110: 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20 20  4 = 10,..       
7120: 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78 46     Unknown = 0xF
7130: 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  FFF..      }....
7140: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7190: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
71a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
71b0: 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20 63  This structure c
71c0: 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74  ontains informat
71d0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63 75  ion about the cu
71e0: 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e 20  rrent computer. 
71f0: 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  This..      /// 
7200: 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70 72 6f  includes the pro
7210: 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70 61 67  cessor type, pag
7220: 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20 61  e size, memory a
7230: 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e 0d 0a  ddresses, etc...
7240: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7250: 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74 72  ary>..      [Str
7260: 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
7270: 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
7280: 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ]..      private
7290: 20 73 74 72 75 63 74 20 53 59 53 54 45 4d 5f 49   struct SYSTEM_I
72a0: 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  NFO..      {..  
72b0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50          public P
72c0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
72d0: 74 75 72 65 20 77 50 72 6f 63 65 73 73 6f 72 41  ture wProcessorA
72e0: 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
72f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
7300: 73 68 6f 72 74 20 77 52 65 73 65 72 76 65 64 3b  short wReserved;
7310: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7320: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
7330: 63 20 75 69 6e 74 20 64 77 50 61 67 65 53 69 7a  c uint dwPageSiz
7340: 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  e; /* NOT USED *
7350: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
7360: 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 69 6e  lic IntPtr lpMin
7370: 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41  imumApplicationA
7380: 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55  ddress; /* NOT U
7390: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
73a0: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
73b0: 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69 63 61  lpMaximumApplica
73c0: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
73d0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
73e0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
73f0: 6e 74 20 64 77 41 63 74 69 76 65 50 72 6f 63 65  nt dwActiveProce
7400: 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54  ssorMask; /* NOT
7410: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
7420: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
7430: 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65 73  dwNumberOfProces
7440: 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sors; /* NOT USE
7450: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
7460: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 72  public uint dwPr
7470: 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a 20  ocessorType; /* 
7480: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7490: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
74a0: 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e 47  nt dwAllocationG
74b0: 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20 4e  ranularity; /* N
74c0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
74d0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68        public ush
74e0: 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 4c 65  ort wProcessorLe
74f0: 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  vel; /* NOT USED
7500: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
7510: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
7520: 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e 3b  ocessorRevision;
7530: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7540: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
7550: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
75b0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
75c0: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
75d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
75e0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
75f0: 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ule file name fo
7600: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
7610: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 6e  ite library or n
7620: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
7630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7640: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7650: 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e   string _SQLiteN
7660: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
7670: 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ame = null;.... 
7680: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
76d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
76e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
76f0: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
7700: 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65 20   handle for the 
7710: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
7720: 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61 6c  brary or the val
7730: 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  ue..      /// In
7740: 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20  tPtr.Zero...    
7750: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7760: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
7770: 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f 53  static IntPtr _S
7780: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
7790: 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72  eHandle = IntPtr
77a0: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65  .Zero;..      #e
77b0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
77c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
77d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
7810: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7820: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
7830: 72 6d 69 6e 65 73 20 74 68 65 20 62 61 73 65 20  rmines the base 
7840: 66 69 6c 65 20 6e 61 6d 65 20 28 77 69 74 68 6f  file name (witho
7850: 75 74 20 61 6e 79 20 64 69 72 65 63 74 6f 72 79  ut any directory
7860: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20   information).. 
7870: 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65       /// for the
7880: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
7890: 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65  ibrary to be pre
78a0: 2d 6c 6f 61 64 65 64 20 62 79 20 74 68 69 73 20  -loaded by this 
78b0: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  class...      //
78c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
78d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
78e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
78f0: 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
7900: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
7910: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f  QLite library to
7920: 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62   be pre-loaded b
7930: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  y..      /// thi
7940: 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c  s class -OR- nul
7950: 6c 20 69 66 20 69 74 73 20 76 61 6c 75 65 20 63  l if its value c
7960: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
7970: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
7980: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7990: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
79a0: 63 20 73 74 72 69 6e 67 20 47 65 74 4e 61 74 69  c string GetNati
79b0: 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  veLibraryFileNam
79c0: 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b  eOnly()..      {
79d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
79e0: 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
79f0: 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  = GetSettingValu
7a00: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
7a10: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
7a20: 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  _LibraryFileName
7a30: 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  Only", null);...
7a40: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66  .          if (f
7a50: 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e  ileNameOnly != n
7a60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7a70: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
7a80: 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20  ameOnly;....    
7a90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
7aa0: 49 54 45 5f 44 4c 4c 3b 0d 0a 20 20 20 20 20 20  ITE_DLL;..      
7ab0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
7b10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7b20: 20 2f 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f   /// Searches fo
7b30: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
7b40: 69 74 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74  ite library in t
7b50: 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  he directory con
7b60: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f  taining..      /
7b70: 2f 2f 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  // the assembly 
7b80: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
7b90: 65 78 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c  executed as well
7ba0: 20 61 73 20 74 68 65 20 62 61 73 65 20 64 69 72   as the base dir
7bb0: 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f  ectory..      //
7bc0: 2f 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  / for the curren
7bd0: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
7be0: 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  main...      ///
7bf0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7c00: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7c10: 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72  me="baseDirector
7c20: 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  y">..      /// U
7c30: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
7c40: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
7c50: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
7c60: 72 65 66 65 72 20 74 6f 20 74 68 65 20 62 61 73  refer to the bas
7c70: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72  e..      /// dir
7c80: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
7c90: 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  g the native SQL
7ca0: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
7cb0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
7cc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7cd0: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
7ce0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
7cf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ..      /// Upon
7d00: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
7d10: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
7d20: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66   modified to ref
7d30: 65 72 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a  er to the name..
7d40: 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65        /// of the
7d50: 20 69 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63   immediate direc
7d60: 74 6f 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f  tory (i.e. the o
7d70: 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
7d80: 61 73 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a  ase directory)..
7d90: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
7da0: 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ning the native 
7db0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
7dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7dd0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7de0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7df0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75  /// Non-zero (su
7e00: 63 63 65 73 73 29 20 69 66 20 74 68 65 20 6e 61  ccess) if the na
7e10: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
7e20: 61 72 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f  ary was found; o
7e30: 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20  therwise,..     
7e40: 20 2f 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75   /// zero (failu
7e50: 72 65 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re)...      /// 
7e60: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7e70: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7e80: 20 62 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44   bool SearchForD
7e90: 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20  irectory(..     
7ea0: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
7eb0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20  baseDirectory,  
7ec0: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
7ed0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
7ee0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
7ef0: 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f  rchitecture /* o
7f00: 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
7f10: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
7f20: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
7f30: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
7f50: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65  eLoadSQLite_NoSe
7f60: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
7f70: 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
7f80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7fa0: 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44  turn false; /* D
7fb0: 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20  ISABLED */..    
7fc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7fd0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7fe0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
7ff0: 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
8000: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
8010: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
8020: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
8030: 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
8040: 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
8050: 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
8060: 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
8070: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
8080: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
8090: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
80a0: 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
80b0: 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
80c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
80d0: 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
80e0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
80f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8100: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
8110: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8120: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
8130: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73   the list of bas
8140: 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e  e directories an
8150: 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74  d processor/plat
8160: 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20  form..          
8170: 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20  //       names. 
8180: 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c   These lists wil
8190: 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  l be used to hel
81a0: 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74  p locate the nat
81b0: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ive..          /
81c0: 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63  /       SQLite c
81d0: 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20  ore library (or 
81e0: 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
81f0: 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e  ) to pre-load in
8200: 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
8210: 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63         this proc
8220: 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
8230: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
8240: 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69  ring[] directori
8250: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
8260: 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
8270: 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23  yDirectory(),..#
8280: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8290: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70               App
82b0: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
82c0: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
82d0: 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ry,..#endif..   
82e0: 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
82f0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
8300: 73 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d  subDirectories =
8310: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8320: 20 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72    GetProcessorAr
8330: 63 68 69 74 65 63 74 75 72 65 28 29 2c 20 47 65  chitecture(), Ge
8340: 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75  tPlatformName(nu
8350: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll)..          }
8360: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
8370: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 64  oreach (string d
8380: 69 72 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65  irectory in dire
8390: 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20  ctories)..      
83a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
83b0: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
83c0: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
83d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
83e0: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
83f0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
8400: 68 20 28 73 74 72 69 6e 67 20 73 75 62 44 69 72  h (string subDir
8410: 65 63 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72  ectory in subDir
8420: 65 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20  ectories)..     
8430: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8450: 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d   (subDirectory =
8460: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
8470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
8480: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
84a0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
84b0: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
84c0: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
84d0: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
84e0: 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 43            MaybeC
84f0: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
8500: 74 6f 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f  tory, subDirecto
8510: 72 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ry),..          
8520: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
8530: 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
8540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8550: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8560: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
8570: 49 66 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c  If the SQLite DL
8580: 4c 20 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72  L file exists, r
8590: 65 74 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a  eturn success...
85a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85b0: 20 20 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72    //       Prior
85c0: 20 74 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73   to returning, s
85d0: 65 74 20 74 68 65 20 62 61 73 65 20 64 69 72 65  et the base dire
85e0: 63 74 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20  ctory and..     
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8600: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20        processor 
8610: 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
8620: 72 65 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61  reflect the loca
8630: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
8640: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8650: 20 77 68 65 72 65 20 69 74 20 77 61 73 20 66 6f   where it was fo
8660: 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  und...          
8670: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8690: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
86a0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86d0: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
86e0: 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d  ry = directory;.
86f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8700: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
8710: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 73  Architecture = s
8720: 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  ubDirectory;..  
8730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8740: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
8750: 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20   /* FOUND */..  
8760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8770: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8780: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
8790: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
87a0: 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f  urn false; /* NO
87b0: 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20  T FOUND */..    
87c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
87d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8810: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
8820: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8830: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
8840: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 62  nd returns the b
8850: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
8860: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
8870: 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  lication..      
8880: 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  /// domain...   
8890: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
88a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
88b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
88c0: 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63  / The base direc
88d0: 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75 72  tory for the cur
88e0: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
88f0: 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c   domain -OR- nul
8900: 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f  l if it..      /
8910: 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
8920: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
8930: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8940: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8950: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 42  atic string GetB
8960: 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  aseDirectory()..
8970: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8980: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8990: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
89a0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
89b0: 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 20 65  BaseDirectory" e
89c0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
89d0: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ble..          /
89e0: 2f 20 20 20 20 20 20 20 69 73 20 73 65 74 2c 20  /       is set, 
89f0: 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20  use it verbatim 
8a00: 66 6f 72 20 74 68 65 20 62 61 73 65 20 64 69 72  for the base dir
8a10: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20  ectory...       
8a20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8a30: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
8a40: 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  y = GetSettingVa
8a50: 6c 75 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69  lue("PreLoadSQLi
8a60: 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79  te_BaseDirectory
8a70: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
8a80: 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20    null);....    
8a90: 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
8aa0: 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
8ab0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8ac0: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d  rn directory;...
8ad0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8ae0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8af0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
8b00: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
8b10: 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
8b20: 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d  dSQLite_UseAssem
8b30: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e  blyDirectory" en
8b40: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
8b50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61       //       va
8b60: 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74  riable is set (t
8b70: 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65  o anything), the
8b80: 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65  n attempt to use
8b90: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
8ba0: 2f 2f 20 20 20 20 20 20 20 64 69 72 65 63 74 6f  //       directo
8bb0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
8bc0: 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  e currently exec
8bd0: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a  uting assembly..
8be0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8bf0: 20 20 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e     (i.e. System.
8c00: 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74  Data.SQLite) int
8c10: 73 65 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c  sead of the appl
8c20: 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  ication..       
8c30: 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61     //       doma
8c40: 69 6e 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  in base director
8c50: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
8c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
8c70: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
8c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8c90: 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
8ca0: 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69  te_UseAssemblyDi
8cb0: 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20  rectory", null) 
8cc0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
8cd0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8ce0: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
8cf0: 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
8d00: 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
8d10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
8d20: 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29  rectory != null)
8d30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d40: 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
8d50: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
8d60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
8d70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
8d80: 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
8d90: 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73  , fallback on us
8da0: 69 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72  ing the base dir
8db0: 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20  ectory of the.. 
8dc0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
8dd0: 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63    current applic
8de0: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20  ation domain... 
8df0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8e00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 70         return Ap
8e10: 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
8e20: 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
8e30: 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ory;..#else..   
8e40: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8e50: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74       // NOTE: Ot
8e60: 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63  herwise, fallbac
8e70: 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64  k on using the d
8e80: 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
8e90: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ing..          /
8ea0: 2f 20 20 20 20 20 20 20 74 68 65 20 63 75 72 72  /       the curr
8eb0: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
8ec0: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
8ed0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8ee0: 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73     return GetAss
8ef0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
8f00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8f10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
8f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
8f70: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8f80: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
8f90: 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20   if the dynamic 
8fa0: 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
8fb0: 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20  e name requires 
8fc0: 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20  a suffix..      
8fd0: 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20  /// and adds it 
8fe0: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
8ff0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9000: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
9010: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
9020: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
9030: 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  / The original d
9040: 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
9050: 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f  ary file name to
9060: 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20   inspect...     
9070: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9080: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9090: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
90a0: 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  e dynamic link l
90b0: 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
90c0: 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66  , possibly modif
90d0: 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61  ied to include a
90e0: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74  n..      /// ext
90f0: 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  ension...      /
9100: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
9110: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9120: 74 69 63 20 73 74 72 69 6e 67 20 46 69 78 55 70  tic string FixUp
9130: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20  DllFileName(..  
9140: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
9150: 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f  ileName /* in */
9160: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
9170: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9180: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
9190: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65  NullOrEmpty(file
91a0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
91b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
91c0: 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c     PlatformID pl
91d0: 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72  atformId = Envir
91e0: 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e  onment.OSVersion
91f0: 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20  .Platform;....  
9200: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9210: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
9220: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53  latformID.Win32S
9230: 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
9240: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
9250: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
9260: 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20  D.Win32Windows) 
9270: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
9280: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
9290: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
92a0: 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20  Win32NT) ||..   
92b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
92c0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
92d0: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29  atformID.WinCE))
92e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9300: 20 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61       if (!fileNa
9310: 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46  me.EndsWith(DllF
9320: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20  ileExtension,.. 
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9340: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
9350: 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
9360: 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20  lIgnoreCase)).. 
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9390: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
93a0: 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46   fileName + DllF
93b0: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20  ileExtension;.. 
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93d0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
93e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
93f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
9400: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
9410: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9420: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
9470: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9480: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
9490: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
94a0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
94b0: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
94c0: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
94d0: 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  /// process...  
94e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
94f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
9500: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
9510: 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72  // The processor
9520: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
9530: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
9540: 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  cess -OR- null i
9550: 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  f it..      /// 
9560: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
9570: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
9580: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
9590: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
95a0: 63 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63  c string GetProc
95b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
95c0: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
95d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
95e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
95f0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
9600: 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72  Lite_ProcessorAr
9610: 63 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69  chitecture" envi
9620: 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
9630: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
9640: 61 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65  able is set, use
9650: 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72   it verbatim for
9660: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
9670: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cessor..        
9680: 20 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69    //       archi
9690: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
96a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
96b0: 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
96c0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
96d0: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
96e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
96f0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
9700: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
9710: 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  cture", null);..
9720: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9730: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
9740: 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  cture != null)..
9750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9760: 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72  turn processorAr
9770: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20  chitecture;.... 
9780: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9790: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47         // BUGBUG
97a0: 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61  : Will this alwa
97b0: 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d  ys be reliable?.
97c0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
97d0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
97e0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
97f0: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
9800: 28 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49  (PROCESSOR_ARCHI
9810: 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d  TECTURE, null);.
9820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9870: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
9880: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9890: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
98a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
98b0: 20 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72   HACK: Check for
98c0: 20 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22   an "impossible"
98d0: 20 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20   situation.  If 
98e0: 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65  the pointer size
98f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9900: 20 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c       is 32-bits,
9910: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
9920: 72 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e  rchitecture cann
9930: 6f 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a  ot be "AMD64"...
9940: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9950: 20 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c     In that case,
9960: 20 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63   we are almost c
9970: 65 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67  ertainly hitting
9980: 20 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20   a bug in the.. 
9990: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
99a0: 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74    operating syst
99b0: 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c  em and/or Visual
99c0: 20 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75   Studio that cau
99d0: 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ses the..       
99e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43     //       PROC
99f0: 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
9a00: 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  RE environment v
9a10: 61 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61  ariable to conta
9a20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
9a30: 20 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67    //       wrong
9a40: 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63   value in some c
9a50: 69 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50  ircumstances.  P
9a60: 6c 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74  lease refer to t
9a70: 69 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20  icket..         
9a80: 20 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38   //       [9ac98
9a90: 36 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68  62611] for furth
9aa0: 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d  er information..
9ab0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
9ac0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e           if ((In
9ad0: 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a  tPtr.Size == siz
9ae0: 65 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20  eof(int)) &&..  
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
9b00: 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73  ng.Equals(proces
9b10: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
9b20: 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20   "AMD64",..     
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
9b40: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
9b50: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
9b60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
9b70: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
9b80: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
9b90: 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
9ba0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9bb0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9bc0: 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73   When tracing is
9bd0: 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74   enabled, save t
9be0: 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65  he originally de
9bf0: 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20  tected..        
9c00: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
9c10: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
9c20: 63 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61  cture before cha
9c30: 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20  nging it...     
9c40: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9c50: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
9c60: 67 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72  g savedProcessor
9c70: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70  Architecture = p
9c80: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9c90: 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ture;..#endif...
9ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9cb0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
9cc0: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f   // NOTE: We kno
9cd0: 77 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67  w that operating
9ce0: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65   systems that re
9cf0: 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d  turn "AMD64" as.
9d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9d10: 2f 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63  /       the proc
9d20: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
9d30: 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20  re are actually 
9d40: 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20  a superset of.. 
9d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9d60: 20 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20        the "x86" 
9d70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9d80: 65 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72  ecture; therefor
9d90: 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20  e, return..     
9da0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9db0: 20 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65    "x86" when the
9dc0: 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73   pointer size is
9dd0: 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20   32-bits...     
9de0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9df0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
9e00: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9e10: 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66   = "x86";....#if
9e20: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
9e30: 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
9e40: 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
9e50: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
9e60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e90: 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74   // NOTE: Show t
9ea0: 68 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69  hat we hit a fai
9eb0: 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75  rly unusual situ
9ec0: 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20  ation (i.e...   
9ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9ee0: 2f 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f  /       the "wro
9ef0: 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ng" processor ar
9f00: 63 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64  chitecture was d
9f10: 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20  etected)...     
9f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f40: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
9f50: 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ne(StringFormat(
9f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9f70: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
9f80: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
9f90: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
9fa0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
9fb0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
9fc0: 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20 7b  oader detected {
9fd0: 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22  0}-bit pointer "
9fe0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
9ff0: 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65 20            "size 
a000: 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61  with processor a
a010: 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31  rchitecture \"{1
a020: 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a  }\", using " +..
a030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a040: 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72        "processor
a050: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
a060: 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e  {2}\" instead...
a070: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
a080: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
a090: 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74  .Size * 8 /* bit
a0a0: 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65  s */, savedProce
a0b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a0c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a0d0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
a0e0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
a0f0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
a100: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
a120: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
a130: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a140: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
a150: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
a160: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
a170: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
a180: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69  lse..          i
a190: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
a1a0: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
a1b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
a1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a1d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a1e0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
a1f0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
a200: 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20  mework, attempt 
a210: 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69 76  to use the nativ
a220: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
a230: 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20   //       Win32 
a240: 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69  API function (vi
a250: 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74  a P/Invoke) that
a260: 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d   can provide us.
a270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
a280: 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68 65  /       with the
a290: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
a2a0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
a2b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a2c0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
a2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a300: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
a310: 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74   The output of t
a320: 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  he GetSystemInfo
a330: 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62   function will b
a340: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
a350: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c       //       pl
a360: 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79  aced here.  Only
a370: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
a380: 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c  rchitecture fiel
a390: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
a3a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
a3b0: 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d 65   used by this me
a3c0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
a3d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
a3f0: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
a400: 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  mInfo;....      
a410: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a430: 20 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79    // NOTE: Query
a440: 20 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   the system info
a450: 72 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e  rmation via P/In
a460: 76 6f 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20 20  voke, thus..    
a470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a480: 20 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74         filling t
a490: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a4c0: 20 20 20 20 20 20 20 47 65 74 53 79 73 74 65 6d         GetSystem
a4d0: 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49  Info(out systemI
a4e0: 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nfo);....       
a4f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
a500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a510: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
a520: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
a530: 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
a540: 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
a550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a560: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a570: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
a580: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d  rArchitecture =.
a590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a5a0: 20 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66         systemInf
a5b0: 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
a5c0: 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
a5d0: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
a5e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
a5f0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
a600: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a620: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
a630: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a650: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a660: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20    // NOTE: Upon 
a670: 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20  failure, return 
a680: 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e  an empty string.
a690: 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76    This will prev
a6a0: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
a6b0: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
a6c0: 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66  calling method f
a6d0: 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20  rom considering 
a6e0: 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c  this method call
a6f0: 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
a700: 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c    //       "fail
a710: 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  ure"...         
a720: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a730: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
a740: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53  Architecture = S
a750: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20  tring.Empty;..  
a760: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
a770: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
a780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a7d0: 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
a7e0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
a7f0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
a800: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
a850: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a860: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65  ..      /// Give
a870: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
a880: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65  architecture, re
a890: 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f  turns the name o
a8a0: 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d  f the platform..
a8b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a8c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a8d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
a8e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
a8f0: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
a900: 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   The processor a
a910: 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62  rchitecture to b
a920: 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20  e translated to 
a930: 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  a platform name.
a940: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a950: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
a960: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
a970: 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72   /// The platfor
a980: 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73  m name for the s
a990: 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73  pecified process
a9a0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
a9b0: 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  -OR- null..     
a9c0: 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f   /// if it canno
a9d0: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
a9e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
a9f0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
aa00: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
aa10: 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e  ing GetPlatformN
aa20: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
aa30: 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
aa40: 41 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20  Architecture /* 
aa50: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
aa60: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
aa70: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
aa80: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
aa90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
aaa0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
aab0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
aac0: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
aad0: 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a  hitecture();....
aae0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
aaf0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
ab00: 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ty(processorArch
ab10: 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20  itecture))..    
ab20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ab30: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
ab40: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
ab50: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
ab60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ab70: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
ab80: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
ab90: 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c  latforms == null
aba0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
abb0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
abc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
abd0: 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
abe0: 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  rmName;....     
abf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
ac00: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
ac10: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47  rePlatforms.TryG
ac20: 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
ac50: 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66  cture, out platf
ac60: 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ormName))..     
ac70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ac90: 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  turn platformNam
aca0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
acb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
acc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
acd0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
ace0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
ad40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ad50: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
ad60: 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
ad70: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
ad80: 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73  y based on the s
ad90: 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20  pecified..      
ada0: 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e  /// directory an
adb0: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
adc0: 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
add0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ade0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
adf0: 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65  m name="baseDire
ae00: 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
ae10: 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
ae20: 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75  ctory to use, nu
ae30: 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
ae40: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
ae50: 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry of..      ///
ae60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
ae70: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29  lication domain)
ae80: 2e 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72  .  This director
ae90: 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  y should contain
aea0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
aeb0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
aec0: 65 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20  ecture specific 
aed0: 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e  sub-directories.
aee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
aef0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
af00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
af10: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
af20: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
af30: 54 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72  The requested pr
af40: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
af50: 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64  ture, null for d
af60: 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20  efault (the..   
af70: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
af80: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
af90: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
afa0: 63 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c  cess).  This cal
afb0: 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ler should..    
afc0: 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77    /// almost alw
afd0: 61 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c  ays specify null
afe0: 20 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65   for this parame
aff0: 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
b000: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b010: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b020: 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  "nativeModuleFil
b030: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
b040: 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65  // The candidate
b050: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66   native module f
b060: 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64  ile name to load
b070: 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20   will be stored 
b080: 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  here,..      ///
b090: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
b0a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b0b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
b0c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
b0d0: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d  eModuleHandle">.
b0e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
b0f0: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
b100: 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20  dle as returned 
b110: 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77  by LoadLibrary w
b120: 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20  ill be stored.. 
b130: 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69       /// here, i
b140: 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
b150: 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
b160: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20   IntPtr.Zero if 
b170: 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20  the call to..   
b180: 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61     /// LoadLibra
b190: 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20  ry fails...     
b1a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
b1b0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
b1c0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
b1d0: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61  n-zero if the na
b1e0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20  tive module was 
b1f0: 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75  loaded successfu
b200: 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  lly; otherwise,.
b210: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
b220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
b230: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
b240: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
b250: 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44  l PreLoadSQLiteD
b260: 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ll(..          s
b270: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
b280: 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20  ory,            
b290: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
b2a0: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
b2b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
b2c0: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
b2d0: 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
b2e0: 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ing nativeModule
b2f0: 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74  FileName, /* out
b300: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
b310: 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65  ef IntPtr native
b320: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20  ModuleHandle    
b330: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
b340: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
b350: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
b360: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
b370: 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  : If the specifi
b380: 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  ed base director
b390: 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  y is null, use t
b3a0: 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20  he default..    
b3b0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
b3c0: 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20  i.e. attempt to 
b3d0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
b3e0: 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20  tect it)...     
b3f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b400: 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63     if (baseDirec
b410: 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tory == null).. 
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
b430: 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74  eDirectory = Get
b440: 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b  BaseDirectory();
b450: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
b460: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
b470: 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
b480: 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62  d to query the b
b490: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73  ase directory, s
b4a0: 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
b4b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
b4c0: 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
b4d0: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b4f0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
b500: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b510: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65       // NOTE: De
b520: 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65  termine the base
b530: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
b540: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
b550: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
b560: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
b570: 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f   this is not kno
b580: 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  wn by this class
b590: 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74  , we cannot cont
b5a0: 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  inue...         
b5b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
b5c0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e  tring fileNameOn
b5d0: 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69  ly = GetNativeLi
b5e0: 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
b5f0: 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
b600: 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e    if (fileNameOn
b610: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
b620: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b630: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
b640: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b650: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
b660: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
b670: 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73  e library exists
b680: 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72   in the base dir
b690: 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
b6a0: 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c    //       itsel
b6b0: 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  f, stop now...  
b6c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b6d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
b6e0: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
b6f0: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
b700: 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
b710: 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
b720: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
b730: 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
b740: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
b750: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
b760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
b770: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
b780: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b790: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
b7a0: 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
b7b0: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
b7c0: 69 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c  itecture is null
b7d0: 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  , use the..     
b7e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65       //       de
b7f0: 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20  fault...        
b800: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b810: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
b820: 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
b830: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
b840: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
b850: 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f  tecture = GetPro
b860: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b870: 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re();....       
b880: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b890: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
b8a0: 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20  failed to query 
b8b0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
b8c0: 63 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70  chitecture, stop
b8d0: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
b8e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
b8f0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
b900: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
b910: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b920: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
b930: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b940: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
b950: 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
b960: 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
b970: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
b980: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
b990: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
b9a0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
b9b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
b9c0: 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20  tecture name... 
b9d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b9e0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
b9f0: 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
ba00: 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  me(MaybeCombineP
ba10: 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ath(MaybeCombine
ba20: 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20  Path(..         
ba30: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
ba40: 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
ba50: 68 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65  hitecture), file
ba60: 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
ba70: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ba80: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
ba90: 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  If the file name
baa0: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72   based on the pr
bab0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
bac0: 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ture name..     
bad0: 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66       // is not f
bae0: 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20  ound, try using 
baf0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70  the associated p
bb00: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
bb10: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
bb20: 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
bb30: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
bb40: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
bb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bb60: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
bb70: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
bb80: 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  t to translate t
bb90: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
bba0: 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a  hitecture to a..
bbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bbc0: 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20         platform 
bbd0: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
bbe0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
bbf0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
bc00: 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74  atformName = Get
bc10: 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f  PlatformName(pro
bc20: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
bc30: 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  re);....        
bc40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
bc50: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
bc60: 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
bc70: 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
bc80: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74  latform name, st
bc90: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
bca0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
bcb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61           if (pla
bcc0: 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c  tformName == nul
bcd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
bce0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
bcf0: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
bd00: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
bd10: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
bd20: 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
bd30: 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
bd40: 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
bd50: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
bd60: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
bd70: 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68  library using th
bd80: 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  e platform name.
bd90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bda0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
bdb0: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78    fileName = Fix
bdc0: 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61  UpDllFileName(Ma
bdd0: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d  ybeCombinePath(M
bde0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
bdf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be00: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
be10: 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  y, platformName)
be20: 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
be30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
be40: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
be50: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
be60: 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
be70: 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
be80: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
be90: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bea0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
beb0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
bec0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
bed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bee0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
bef0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
bf00: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
bf10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
bf20: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
bf30: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
bf40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf50: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
bf60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
bf70: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bf90: 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63   NOTE: Show exac
bfa0: 74 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65  tly where we are
bfb0: 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
bfc0: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bfe0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
bff0: 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
c000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c010: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c020: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
c030: 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61  Line(StringForma
c040: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
c050: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
c060: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
c070: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
c080: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
c090: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
c0a0: 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e  -loader is tryin
c0b0: 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  g to load native
c0c0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
c0d0: 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
c0e0: 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
c0f0: 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d  }\"...", fileNam
c100: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
c110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c120: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
c130: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
c140: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c150: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
c160: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
c170: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
c180: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
c190: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
c1a0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
c1b0: 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74  ttempt to load t
c1c0: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
c1d0: 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69  y.  This will ei
c1e0: 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ther..          
c1f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
c200: 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69  urn a valid nati
c210: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
c220: 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e  , return IntPtr.
c230: 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Zero,..         
c240: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
c250: 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74   throw an except
c260: 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74 20  ion.  This must 
c270: 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72 69  use the appropri
c280: 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ate..           
c290: 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e     //       P/In
c2a0: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72 20  voke method for 
c2b0: 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72  the current oper
c2c0: 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20  ating system... 
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
c2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
c2f0: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
c300: 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d  ame = fileName;.
c310: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c320: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c330: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
c340: 20 69 66 20 28 28 45 6e 76 69 72 6f 6e 6d 65 6e   if ((Environmen
c350: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
c360: 66 6f 72 6d 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  form == Platform
c370: 49 44 2e 55 6e 69 78 29 20 7c 7c 0d 0a 20 20 20  ID.Unix) ||..   
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
c390: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65  Environment.OSVe
c3a0: 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 20 3d  rsion.Platform =
c3b0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 4d 61 63  = PlatformID.Mac
c3c0: 4f 53 58 29 29 0d 0a 20 20 20 20 20 20 20 20 20  OSX))..         
c3d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c3e0: 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
c3f0: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 64  ModuleHandle = d
c400: 6c 6f 70 65 6e 28 66 69 6c 65 4e 61 6d 65 2c 20  lopen(fileName, 
c410: 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b 0d 0a  RTLD_DEFAULT);..
c420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
c440: 6c 73 65 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  lse..#endif..   
c450: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c470: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
c480: 6c 65 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79  le = LoadLibrary
c490: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20  (fileName);..   
c4a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c4c0: 74 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75  turn (nativeModu
c4d0: 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  leHandle != IntP
c4e0: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
c4f0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
c500: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
c510: 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
c520: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
c530: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
c540: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
c550: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
c560: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
c570: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
c580: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
c590: 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
c5a0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
c5e0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c5f0: 20 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65   First, grab the
c600: 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f   last Win32 erro
c610: 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r number...     
c620: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
c630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c640: 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72     int lastError
c650: 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61   = Marshal.GetLa
c660: 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20  stWin32Error(); 
c670: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
c680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c690: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
c6a0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c6b0: 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61  Show where we fa
c6c0: 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65  iled to load the
c6d0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
c700: 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69  ry from along wi
c710: 74 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72  th the Win32 err
c720: 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20  or code and..   
c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c740: 2f 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f  /       exceptio
c750: 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  n information...
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c770: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
c780: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
c790: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f  iteLine(StringFo
c7a0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
c7c0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
c7d0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7f0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
c800: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
c810: 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
c820: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
c830: 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
c840: 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
c850: 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f  }\" (getLastErro
c860: 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
c870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c880: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
c890: 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
c8a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
c8d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
c8e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c8f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
c900: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
c910: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
c920: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c930: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c940: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  false;..      }.
c950: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
c960: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
c970: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
c980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
c9d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c9e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20  EWORK..    //.. 
c9f0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74     // NOTE: On t
ca00: 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
ca10: 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e  Framework, the n
ca20: 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73  ative interop as
ca30: 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20  sembly must..   
ca40: 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73 65   //       be use
ca50: 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72 6f  d because it pro
ca60: 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f  vides several wo
ca70: 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45  rkarounds to .NE
ca80: 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f  T Compact..    /
ca90: 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72  /       Framewor
caa0: 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d  k limitations im
cab0: 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70  portant for prop
cac0: 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  er operation of 
cad0: 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  the core..    //
cae0: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
caf0: 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ta.SQLite functi
cb00: 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65  onality (e.g. be
cb10: 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64  ing able to bind
cb20: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70  ..    //       p
cb30: 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61  arameters and ha
cb40: 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ndle column valu
cb50: 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36  es of types Int6
cb60: 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a  4 and Double)...
cb70: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49      //..#if SQLI
cb80: 54 45 5f 53 54 41 4e 44 41 52 44 5f 4c 49 42 52  TE_STANDARD_LIBR
cb90: 41 52 59 5f 4e 41 4d 45 0d 0a 20 20 20 20 69 6e  ARY_NAME..    in
cba0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
cbb0: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
cbc0: 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
cbd0: 73 65 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  se..    internal
cbe0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
cbf0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69  LITE_DLL = "SQLi
cc00: 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 30 2e 64  te.Interop.100.d
cc10: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65  ll";..#endif..#e
cc20: 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  lif SQLITE_STAND
cc30: 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ARD..    //..   
cc40: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
cc50: 69 73 65 2c 20 69 66 20 74 68 65 20 73 74 61 6e  ise, if the stan
cc60: 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72  dard SQLite libr
cc70: 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ary is enabled, 
cc80: 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d  use it...    //.
cc90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
cca0: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
ccb0: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
ccc0: 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e  ";..#elif USE_IN
ccd0: 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 20  TEROP_DLL..     
cce0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
ccf0: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20  : Otherwise, if 
cd00: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
cd10: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
cd20: 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a  ly is enabled,..
cd30: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
cd40: 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69   it...    //..#i
cd50: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
cd60: 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d 0a  D_LIBRARY_NAME..
cd70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
cd80: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
cd90: 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22  _DLL = "sqlite3"
cda0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69 6e  ;..#else..    in
cdb0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
cdc0: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
cdd0: 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70   "SQLite.Interop
cde0: 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a  .dll";..#endif..
cdf0: 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
ce00: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
ce10: 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
ce20: 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
ce30: 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
ce40: 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
ce50: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
ce60: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
ce70: 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
ce80: 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
ce90: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
cea0: 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
ceb0: 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
cec0: 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
ced0: 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
cee0: 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
cef0: 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
cf00: 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
cf10: 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
cf20: 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
cf30: 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
cf40: 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
cf50: 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
cf60: 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
cf70: 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
cf80: 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
cf90: 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
cfa0: 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
cfb0: 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
cfc0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
cfd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cfe0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
cff0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d000: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d010: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
d020: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
d030: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
d040: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
d050: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
d060: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d070: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
d080: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d090: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d0a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
d0b0: 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
d0c0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
d0d0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
d0e0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
d0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d100: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
d110: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d120: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d130: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
d140: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
d150: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
d160: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
d170: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
d180: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d190: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
d1a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d1b0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
d1c0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
d1d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
d1e0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
d1f0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
d200: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d210: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
d220: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d230: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
d240: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
d250: 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
d260: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
d270: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
d280: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
d290: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d2a0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
d2b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d2c0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d2d0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
d2e0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
d2f0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
d300: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
d310: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d320: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
d330: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d340: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
d350: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
d360: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
d370: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
d380: 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
d390: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
d3a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d3b0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
d3c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
d3d0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
d3e0: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
d3f0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
d400: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
d410: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
d420: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d430: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
d440: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d450: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d460: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
d470: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
d480: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
d490: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
d4a0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
d4b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d4c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
d4d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d4e0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d4f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
d500: 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
d510: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
d520: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
d530: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
d540: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d550: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
d560: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d570: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
d580: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
d590: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
d5a0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d5b0: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
d5c0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
d5d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d5e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d5f0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d600: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
d610: 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
d620: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
d630: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
d640: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
d650: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d660: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
d670: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d680: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
d690: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
d6a0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
d6b0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
d6c0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
d6d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d6e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
d6f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d700: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d710: 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
d720: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
d730: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
d740: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d750: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
d760: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d770: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
d780: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
d790: 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
d7a0: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
d7b0: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
d7c0: 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
d7d0: 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
d7e0: 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69  ptrRemain, ref i
d7f0: 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
d800: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d810: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
d820: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d830: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
d840: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
d850: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
d860: 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
d870: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
d880: 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
d890: 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
d8a0: 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
d8b0: 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
d8c0: 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
d8d0: 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
d8e0: 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
d8f0: 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
d900: 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66  int autoInc, ref
d910: 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20   int dtLen, ref 
d920: 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
d930: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d940: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
d950: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d960: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
d970: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
d980: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
d990: 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
d9a0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
d9b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d9c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d9d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d9e0: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
d9f0: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
da00: 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
da10: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
da20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
da30: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
da40: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
da50: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
da60: 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
da70: 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
da80: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
da90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
daa0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
dab0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
dac0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
dad0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
dae0: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
daf0: 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
db00: 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
db10: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
db20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
db30: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
db40: 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
db50: 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
db60: 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
db70: 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
db80: 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
db90: 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
dba0: 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
dbb0: 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
dbc0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
dbd0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
dbe0: 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
dbf0: 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
dc00: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
dc10: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
dc20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
dc30: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dc40: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
dc50: 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
dc60: 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
dc70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dc80: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
dc90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
dca0: 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
dcb0: 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
dcc0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dcd0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
dce0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
dcf0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
dd00: 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
dd10: 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
dd20: 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
dd30: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dd40: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
dd50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
dd60: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
dd70: 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
dd80: 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
dd90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dda0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
ddb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ddc0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ddd0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
dde0: 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
ddf0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
de00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
de10: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
de20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
de30: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
de40: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
de50: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
de60: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
de70: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
de80: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
de90: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
dea0: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
deb0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
dec0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
ded0: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
dee0: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
def0: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
df00: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
df10: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
df20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
df30: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
df40: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
df50: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
df60: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
df70: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
df80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
df90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dfa0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
dfb0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
dfc0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
dfd0: 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
dfe0: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
dff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e000: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
e010: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e020: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
e030: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
e040: 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
e050: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
e060: 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
e070: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
e080: 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
e090: 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
e0a0: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
e0b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e0c0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
e0d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e0e0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
e0f0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
e100: 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  16_interop(byte[
e110: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
e120: 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
e130: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
e140: 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
e150: 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
e160: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
e170: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e180: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
e190: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e1a0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
e1b0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65  ode sqlite3_rese
e1c0: 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
e1d0: 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
e1e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e1f0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
e200: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e210: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
e220: 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49  hanges_interop(I
e230: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
e240: 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53  if..// !SQLITE_S
e250: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
e260: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e270: 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64   // The standard
e280: 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61   api call equiva
e290: 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f  lents of the abo
e2a0: 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  ve interop calls
e2b0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
e2c0: 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20  andard versions 
e2d0: 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74  of interop funct
e2e0: 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ions....#if SQLI
e2f0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23  TE_STANDARD....#
e300: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e310: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e320: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e330: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e340: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e350: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e360: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e370: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e380: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e390: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e3a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e3b0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e3c0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e  sqlite3_close(In
e3d0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
e3e0: 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59   !INTEROP_LEGACY
e3f0: 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41  _CLOSE..#if !PLA
e400: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e410: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e420: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e430: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e440: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e450: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e460: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e470: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e480: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e4a0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e4b0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e4c0: 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72  _close_v2(IntPtr
e4d0: 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b   db); /* 3.7.14+
e4e0: 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23   */..#endif....#
e4f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e500: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e510: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e520: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e530: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e540: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e550: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e560: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e570: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e580: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e590: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e5a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e5b0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
e5c0: 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  unction(IntPtr d
e5d0: 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
e5e0: 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
e5f0: 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
e600: 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
e610: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
e620: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
e630: 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
e640: 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d  llback ffinal);.
e650: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e660: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e670: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e680: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e690: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e6a0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
e6b0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
e6c0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e6d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e6e0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
e6f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e700: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
e710: 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  ode sqlite3_fina
e720: 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74  lize(IntPtr stmt
e730: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e740: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e750: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e760: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e770: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e780: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e790: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e7a0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e7b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e7c0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e7d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e7e0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e7f0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
e800: 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74  ackup_finish(Int
e810: 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
e820: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e830: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e840: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e850: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e860: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e870: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e880: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e890: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e8a0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e8b0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e8c0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e8d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
e8e0: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49   sqlite3_reset(I
e8f0: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
e900: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e910: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e930: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e940: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e950: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e960: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e970: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e980: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e990: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e9a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e9b0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
e9c0: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
e9d0: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
e9e0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
e9f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ea00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ea10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ea20: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ea30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ea40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ea50: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
ea60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ea70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
ea80: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ea90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
eaa0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
eab0: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
eac0: 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
ead0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
eae0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
eaf0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
eb00: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
eb10: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
eb20: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
eb30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
eb40: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
eb50: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
eb60: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
eb70: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
eb80: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
eb90: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
eba0: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
ebb0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
ebc0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
ebd0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ebe0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ebf0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ec00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ec10: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ec20: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ec30: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ec40: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ec50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ec60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ec70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ec80: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
ec90: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
eca0: 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
ecb0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
ecc0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ecd0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ece0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ecf0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ed00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ed10: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ed20: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
ed30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ed40: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
ed50: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ed60: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ed70: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
ed80: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
ed90: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
eda0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
edb0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
edc0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
edd0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ede0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
edf0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ee00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ee10: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
ee20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ee30: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
ee40: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
ee50: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ee60: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
ee70: 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  lumn_name(IntPtr
ee80: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
ee90: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
eea0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
eeb0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
eec0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
eed0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
eee0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
eef0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ef00: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ef10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ef20: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ef30: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ef40: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
ef50: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
ef60: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
ef70: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
ef80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ef90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
efa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
efb0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
efc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
efd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
efe0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
eff0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f000: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f010: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f020: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f030: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
f040: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
f050: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
f060: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
f070: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f080: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f090: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f0a0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f0b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f0c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f0d0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
f0e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f0f0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
f100: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
f110: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f120: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
f130: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
f140: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
f150: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
f160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f180: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f190: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
f1a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
f1b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f1c0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
f1d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f1e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f1f0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f200: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f210: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
f220: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
f230: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
f240: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
f250: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f260: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f270: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f280: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f290: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f2a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f2b0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
f2c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f2d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
f2e0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
f2f0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f300: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
f310: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
f320: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
f330: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
f340: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f350: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f360: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f370: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f380: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f390: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f3a0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
f3b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f3c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
f3d0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
f3e0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f3f0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
f400: 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72  lumn_text(IntPtr
f410: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
f420: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
f430: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f440: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f450: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f460: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f470: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
f480: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f490: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f4a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f4b0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f4c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f4d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
f4e0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
f4f0: 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
f500: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
f510: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f520: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f530: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f540: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
f550: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
f560: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f570: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
f580: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f590: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f5a0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f5b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f5c0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
f5d0: 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62  errmsg(IntPtr db
f5e0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
f5f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f600: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f610: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f620: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f630: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
f640: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f650: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f660: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f670: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f680: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f690: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
f6a0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70  orCode sqlite3_p
f6b0: 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62  repare(IntPtr db
f6c0: 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
f6d0: 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
f6e0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
f6f0: 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
f700: 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52  );....#if USE_PR
f710: 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50  EPARE_V2..#if !P
f720: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f730: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f740: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f750: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
f760: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f770: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f780: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
f790: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f7a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
f7b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f7c0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
f7d0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
f7e0: 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e  e3_prepare_v2(In
f7f0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
f800: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
f810: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
f820: 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
f830: 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69  rRemain);..#endi
f840: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
f850: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f860: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f870: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f880: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f890: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f8a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f8b0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f8c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f8d0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
f8e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f8f0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
f900: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
f910: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
f920: 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ata(IntPtr db, b
f930: 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
f940: 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
f950: 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
f960: 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
f970: 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
f980: 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
f990: 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
f9a0: 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
f9b0: 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
f9c0: 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  c);....#if !PLAT
f9d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f9e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
f9f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fa00: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
fa10: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
fa20: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
fa30: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
fa40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fa50: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
fa60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fa70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
fa80: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
fa90: 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  t(IntPtr p);....
faa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fab0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fad0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
fae0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
faf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
fb00: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
fb10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fb20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
fb30: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
fb40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fb50: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
fb60: 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74  value_text16(Int
fb70: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69  Ptr p);....#endi
fb80: 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45  f..    // SQLITE
fb90: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
fba0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
fbb0: 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63     // These func
fbc0: 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d  tions are custom
fbd0: 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75   and have no equ
fbe0: 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64  ivalent standard
fbf0: 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e   library method.
fc00: 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20  ..    // All of 
fc10: 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74  them are "nice t
fc20: 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74  o haves" and not
fc30: 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65   necessarily "ne
fc40: 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20  ed to haves"... 
fc50: 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71     #region no eq
fc60: 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72  uivalent standar
fc70: 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20  d method....#if 
fc80: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
fc90: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
fca0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
fcb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
fcc0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
fcd0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  tr sqlite3_conte
fce0: 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72  xt_collseq_inter
fcf0: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
fd00: 74 2c 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c  t, ref int type,
fd10: 20 72 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65   ref int enc, re
fd20: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
fd30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fd40: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
fd50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fd60: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
fd70: 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63  e3_context_collc
fd80: 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49  ompare_interop(I
fd90: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
fda0: 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31  yte[] p1, int p1
fdb0: 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20  len, byte[] p2, 
fdc0: 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20  int p2len);.... 
fdd0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fde0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
fdf0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fe00: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
fe10: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
fe20: 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65  ursor_rowid_inte
fe30: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
fe40: 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66   int cursor, ref
fe50: 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d   long rowid);...
fe60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fe70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
fe80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fe90: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
fea0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
feb0: 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e  _index_column_in
fec0: 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  fo_interop(IntPt
fed0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74  r db, byte[] cat
fee0: 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64  alog, byte[] Ind
fef0: 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43  exName, byte[] C
ff00: 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69  olumnName, ref i
ff10: 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65  nt sortOrder, re
ff20: 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72  f int onError, r
ff30: 65 66 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74  ef IntPtr Collat
ff40: 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c  ion, ref int col
ff50: 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  llen);....    [D
ff60: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ff70: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
ff80: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ff90: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61  n int sqlite3_ta
ffa0: 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72  ble_cursor_inter
ffb0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
ffc0: 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c  int db, int tabl
ffd0: 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23  eRootPage);....#
ffe0: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
fff0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
10000 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
10010 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20      // Standard 
10020 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c  API calls global
10030 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73   across versions
10040 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66  .  There are a f
10050 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  ew instances of 
10060 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
10070 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
10080 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
10090 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
100a0 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
100b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
100c0 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20   is declared... 
100d0 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
100e0 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
100f0 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  alls....#if !PLA
10100 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10110 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10120 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10130 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10140 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10150 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10160 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10170 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10180 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10190 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
101a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
101b0 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
101c0 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
101d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
101e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
101f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10200 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10210 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10220 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10230 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10240 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10250 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10260 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10270 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10280 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
10290 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69  _number();....#i
102a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
102b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
102c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
102d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
102e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
102f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10300 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10310 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10320 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10330 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10340 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
10350 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f  ntPtr sqlite3_so
10360 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66  urceid();....#if
10370 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10380 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10390 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
103a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
103b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
103c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
103d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
103e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
103f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10400 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10410 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
10420 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  t sqlite3_compil
10430 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
10440 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
10450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10470 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10480 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
104a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
104b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
104c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
104d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
104e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
104f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10500 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10510 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
10520 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23  get(int N);....#
10530 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10540 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10550 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10560 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10570 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10580 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10590 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
105a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
105b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
105c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
105d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
105e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
105f0 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
10600 68 61 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20  hared_cache(..  
10610 20 20 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65        int enable
10620 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10630 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10640 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10650 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10660 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10670 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10680 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10690 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
106a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
106b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
106c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
106d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
106e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
106f0 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
10700 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
10710 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e  ntPtr db, int en
10720 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
10730 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10740 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10750 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10760 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10770 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10780 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10790 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
107a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
107b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
107c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
107d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
107e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
107f0 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
10800 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
10810 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69  tr db, byte[] fi
10820 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70  leName, byte[] p
10830 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  rocName, ref Int
10840 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a  Ptr pError);....
10850 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10860 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10870 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10880 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10890 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
108a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
108b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
108c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
108d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
108e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
108f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10900 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10910 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
10920 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  d_function(IntPt
10930 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61  r db, IntPtr zNa
10940 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d  me, int nArgs);.
10950 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a  ...#if WINDOWS..
10960 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10970 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10980 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10990 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
109a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
109b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
109c0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
109d0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
109e0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
109f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10a00 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
10a10 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
10a20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10a30 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
10a40 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
10a50 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
10a60 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  y" SQLite core l
10a70 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
10a80 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
10a90 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
10aa0 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20  on Windows...   
10ab0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
10ac0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10ad0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10ae0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
10af0 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
10b00 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
10b10 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45  lue);....#if !DE
10b20 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f  BUG // NOTE: Sho
10b30 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48 45 41  uld be "WIN32HEA
10b40 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d  P && !MEMDEBUG".
10b50 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10b60 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10b70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10b80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10b90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10ba0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10bb0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10bc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10bd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10be0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
10bf0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
10c00 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72  "sqlite3_win32_r
10c10 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74  eset_heap" SQLit
10c20 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
10c30 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
10c40 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
10c50 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
10c60 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
10c70 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
10c80 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
10c90 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
10ca0 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
10cb0 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
10cc0 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
10cd0 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
10ce0 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
10cf0 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
10d00 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
10d10 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
10d20 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
10d30 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
10d40 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
10d50 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
10d60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10d70 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10d80 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
10d90 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d  2_reset_heap();.
10da0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10db0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10dc0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10dd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10de0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10df0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10e00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10e10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10e20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10e30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
10e40 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
10e50 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
10e60 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53  _compact_heap" S
10e70 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
10e80 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
10e90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
10ea0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
10eb0 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
10ec0 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
10ed0 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
10ee0 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
10ef0 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
10f00 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
10f10 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
10f20 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
10f30 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
10f40 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
10f50 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
10f60 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
10f70 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
10f80 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
10f90 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
10fa0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
10fb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10fc0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10fd0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10fe0 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
10ff0 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67  ap(ref uint larg
11000 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  est);..#endif..#
11010 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
11020 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11030 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11050 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11060 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11070 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11080 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
110a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
110b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
110c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
110d0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
110e0 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
110f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11100 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11110 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11120 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11130 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11140 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11150 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11160 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11170 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11180 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11190 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
111a0 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  tr sqlite3_reall
111b0 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74  oc(IntPtr p, int
111c0 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   n);....#if !PLA
111d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
111e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
111f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11200 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11210 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11220 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11230 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11240 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11250 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11260 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11270 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
11280 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74  lite3_free(IntPt
11290 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
112a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
112b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
112c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
112d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
112e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
112f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11300 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11310 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11320 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11330 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11340 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
11350 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
11360 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d  3_open_v2(byte[]
11370 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72   utf8Filename, r
11380 65 66 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ef IntPtr db, SQ
11390 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
113a0 6d 20 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20  m flags, byte[] 
113b0 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  vfsName);....#if
113c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
113d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
113e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
113f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11400 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11410 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11420 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
11430 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
11440 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11450 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11460 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
11470 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
11480 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11490 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
114a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
114b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
114c0 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  16(string fileNa
114d0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
114e0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
114f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11500 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11510 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11520 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11530 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11540 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11550 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11560 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11570 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11580 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11590 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
115a0 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49  ite3_interrupt(I
115b0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
115c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
115d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
115e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
115f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11600 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11610 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11620 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
11630 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11640 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
11650 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
11660 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23  d(IntPtr db);..#
11670 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
11680 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11690 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
116a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
116b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
116c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
116d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
116e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
116f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11700 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11720 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
11730 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e  lite3_changes(In
11740 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
11750 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11760 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11770 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11780 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11790 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
117a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
117b0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
117c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
117d0 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d  n long sqlite3_m
117e0 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23  emory_used();..#
117f0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
11800 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11810 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11830 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11840 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11850 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11860 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11870 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
11880 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
11890 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20  y_highwater(int 
118a0 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e  resetFlag);..#en
118b0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
118c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
118d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
118e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
118f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11900 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11910 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11920 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11930 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11940 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11950 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11960 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
11970 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
11980 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23  shutdown();....#
11990 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
119a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
119b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
119c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
119d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
119e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
119f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11a00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11a10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11a20 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11a30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11a40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11a50 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
11a60 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20  eout(IntPtr db, 
11a70 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20  int ms);....#if 
11a80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11a90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11aa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11ab0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11ac0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11ad0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11ae0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11af0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11b00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11b10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11b20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11b30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11b40 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69  ite3_clear_bindi
11b50 6e 67 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29  ngs(IntPtr stmt)
11b60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11b70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11b80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11b90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11ba0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11bb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11bc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11bd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11be0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11bf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11c00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11c10 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
11c20 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
11c30 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  nd_blob(IntPtr s
11c40 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
11c50 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  Byte[] value, in
11c60 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
11c70 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a  nTransient);....
11c80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11c90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11ca0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11cb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11cc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11cd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11ce0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
11cf0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11d00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
11d10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
11d20 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  d_double(IntPtr 
11d30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
11d40 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
11d50 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
11d60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11d70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11d80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11d90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11da0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11db0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11dc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11dd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11de0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11df0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11e00 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
11e10 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
11e20 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74  te3_bind_int(Int
11e30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
11e40 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  dex, int value);
11e50 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
11e60 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
11e70 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
11e80 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
11e90 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  t"; however, it 
11ea0 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
11eb0 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
11ec0 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
11ed0 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32   an unsigned (32
11ee0 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
11ef0 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
11f00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11f10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11f20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11f30 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
11f40 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
11f50 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  t", CallingConve
11f60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11f70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11f80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11f90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11fa0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
11fb0 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
11fc0 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  int")]..#endif..
11fd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11fe0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
11ff0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
12000 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74  e3_bind_uint(Int
12010 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
12020 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29  dex, uint value)
12030 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12050 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12070 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12080 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12090 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
120a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
120b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
120c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
120d0 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74  3_bind_int64(Int
120e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
120f0 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29  dex, long value)
12100 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
12110 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
12120 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75  : This really ju
12130 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65  st calls "sqlite
12140 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68  3_bind_int64"; h
12150 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
12160 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
12170 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
12180 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
12190 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34  nsigned long (64
121a0 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
121b0 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
121c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
121d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
121e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
121f0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
12200 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
12210 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  t64", CallingCon
12220 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12230 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12240 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
12250 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12260 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12270 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
12280 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
12290 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e   int index, ulon
122a0 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
122b0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
122c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
122d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
122e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
122f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12300 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12310 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12320 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12330 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12340 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12350 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12360 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
12370 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
12380 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73  nd_null(IntPtr s
12390 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
123a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
123b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
123c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
123d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
123e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
123f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12400 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12410 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12420 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12430 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12440 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12450 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
12460 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
12470 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74  d_text(IntPtr st
12480 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62  mt, int index, b
12490 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
124a0 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
124b0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
124c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
124d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
124e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
124f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12500 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12520 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12530 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12540 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12550 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12560 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
12570 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
12580 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28  parameter_count(
12590 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
125a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
125b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
125c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
125d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
125e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
125f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12600 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
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 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12630 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12640 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12650 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
12660 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
12670 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ex(IntPtr stmt, 
12680 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b  byte[] strName);
12690 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
126a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
126b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
126c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
126d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
126e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
126f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12700 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12710 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12720 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12730 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12740 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
12750 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e  _column_count(In
12760 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
12770 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12780 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12790 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
127a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
127b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
127c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
127d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
127e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
127f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12800 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12810 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12820 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12830 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74  sqlite3_step(Int
12840 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
12850 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12860 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12870 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12880 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12890 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
128a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
128b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
128c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
128d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
128e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
128f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
12900 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  nt sqlite3_stmt_
12910 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20  readonly(IntPtr 
12920 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b  stmt); /* 3.7.4+
12930 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54   */....#if !PLAT
12940 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12950 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12960 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12970 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12980 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12990 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
129a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
129b0 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
129c0 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  le sqlite3_colum
129d0 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  n_double(IntPtr 
129e0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
129f0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
12a00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12a10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12a20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12a30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12a40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12a50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12a60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12a70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12a80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12a90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12aa0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
12ab0 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
12ac0 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
12ad0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
12ae0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12af0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12b00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12b10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12b20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12b40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
12b50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12b60 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
12b70 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28  e3_column_int64(
12b80 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
12b90 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
12ba0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12bb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12bc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12bd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12be0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12bf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12c00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12c10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12c20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12c30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12c40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12c50 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12c60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28  te3_column_blob(
12c70 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
12c80 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
12c90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12ca0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12cb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12cc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12cd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12cf0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12d00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12d10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12d20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12d30 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
12d40 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
12d50 62 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d  bytes(IntPtr stm
12d60 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
12d70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12d80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12d90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12da0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12db0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12dc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12dd0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12de0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12df0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12e00 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12e10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12e20 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
12e30 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e  olumn_bytes16(In
12e40 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
12e50 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
12e60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12e70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12e80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12e90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12ea0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12eb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12ec0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12ed0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12ee0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12ef0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12f00 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
12f10 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
12f20 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50  column_type(IntP
12f30 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
12f40 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
12f50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12f60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12f70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12f80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12f90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12fa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12fb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12fc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12fd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12fe0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12ff0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13000 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13010 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
13020 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
13030 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
13040 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
13050 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c  vUser, SQLiteCol
13060 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d  lation func);...
13070 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13080 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13090 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
130a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
130b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
130c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
130d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
130e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
130f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13100 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13110 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13120 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67  n int sqlite3_ag
13130 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e  gregate_count(In
13140 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
13150 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13160 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13170 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13180 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13190 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
131a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
131b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
131c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
131d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
131e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
131f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13200 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13210 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74  3_value_blob(Int
13220 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
13230 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13240 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13250 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13260 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13270 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13280 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13290 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
132a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
132b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
132c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
132d0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
132e0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
132f0 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  tes(IntPtr p);..
13300 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13310 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13320 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13330 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13350 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13360 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13370 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13390 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
133a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
133b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
133c0 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74  alue_bytes16(Int
133d0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
133e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
133f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13410 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13420 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13430 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13440 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
13450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13460 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76  double sqlite3_v
13470 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50  alue_double(IntP
13480 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
13490 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
134a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
134b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
134c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
134d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
134e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
134f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13500 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13510 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13520 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13530 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13540 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
13550 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20  alue_int(IntPtr 
13560 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
13570 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13580 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13590 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
135a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
135b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
135c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
135d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
135e0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
135f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
13600 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d  nt64(IntPtr p);.
13610 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
13620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13640 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13650 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13660 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13670 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13680 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
136a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
136b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
136c0 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65  atic extern Type
136d0 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33  Affinity sqlite3
136e0 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50  _value_type(IntP
136f0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
13700 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13710 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13720 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13730 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13740 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13750 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13760 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13770 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13780 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13790 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
137a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
137b0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62  sqlite3_result_b
137c0 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
137d0 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
137e0 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
137f0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
13800 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13810 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13820 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13830 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13840 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13850 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13860 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
13870 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13880 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
13890 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
138a0 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ble(IntPtr conte
138b0 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  xt, double value
138c0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
138d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
138e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
138f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13900 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13910 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13920 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13930 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13950 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13960 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13970 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
13980 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
13990 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20  lt_error(IntPtr 
139a0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
139b0 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e  strErr, int nLen
139c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
139d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
139e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
139f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13a00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13a10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13a20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13a30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13a40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13a50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13a60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13a70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
13a80 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
13a90 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e  _code(IntPtr con
13aa0 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f  text, SQLiteErro
13ab0 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  rCode value);...
13ac0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13ad0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13af0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13b00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13b20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13b40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13b50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13b60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13b70 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
13b80 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62  esult_error_toob
13b90 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ig(IntPtr contex
13ba0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
13bb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13bc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13bd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13be0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13bf0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13c00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13c10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13c20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13c30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13c40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13c50 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
13c60 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
13c70 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63  r_nomem(IntPtr c
13c80 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
13c90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13ca0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13cb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13cc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13cd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13cf0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13d00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13d10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13d20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13d30 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
13d40 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
13d50 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f  _value(IntPtr co
13d60 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61  ntext, IntPtr va
13d70 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
13d80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13d90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13da0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13db0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13dc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13dd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13de0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13df0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13e00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13e10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13e20 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13e30 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65  qlite3_result_ze
13e40 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f  roblob(IntPtr co
13e50 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29  ntext, int nLen)
13e60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13e70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13e80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13ea0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13eb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13ec0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13ed0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13ee0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13ef0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13f00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13f10 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
13f20 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e  e3_result_int(In
13f30 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
13f40 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
13f50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13f60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13f70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13f80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13fb0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
13fc0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13fd0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
13fe0 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50  esult_int64(IntP
13ff0 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67  tr context, long
14000 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
14010 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14020 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14030 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14040 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14050 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14060 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14070 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14080 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14090 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
140a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
140b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
140c0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
140d0 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e  3_result_null(In
140e0 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
140f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14100 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14110 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14120 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14130 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14140 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14150 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14160 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14180 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14190 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
141a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
141b0 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50  result_text(IntP
141c0 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
141d0 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c  [] value, int nL
141e0 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
141f0 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
14200 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14210 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14220 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14230 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14240 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14250 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14260 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14270 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14280 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14290 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
142a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
142b0 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  tr sqlite3_aggre
142c0 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74  gate_context(Int
142d0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
142e0 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66   nBytes);....#if
142f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14300 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14310 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14320 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14330 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14340 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14350 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
14360 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
14370 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14390 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
143a0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
143b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
143c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
143d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
143e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
143f0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
14400 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14410 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e  string value, in
14420 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
14430 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
14440 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14450 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14460 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14470 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14480 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14490 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
144a0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
144b0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
144c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
144d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
144e0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
144f0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
14500 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14520 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14530 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31  e3_result_error1
14540 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
14550 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
14560 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
14570 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14580 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14590 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
145a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
145b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
145c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
145d0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
145e0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
145f0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
14600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14610 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
14620 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
14630 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14640 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14650 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14660 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
14670 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
14680 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
14690 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
146a0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
146b0 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43  ...#if INTEROP_C
146c0 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f  ODEC || INTEROP_
146d0 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66  INCLUDE_SEE..#if
146e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
146f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14700 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14710 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14720 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14730 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14740 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14750 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14760 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14770 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14780 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14790 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
147a0 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72  lite3_key(IntPtr
147b0 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
147c0 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d   int keylen);...
147d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
147e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
147f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14800 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14810 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14820 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14830 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14840 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14850 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14860 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14870 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14880 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
14890 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28  e sqlite3_rekey(
148a0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
148b0 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
148c0 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
148d0 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55  if INTEROP_INCLU
148e0 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21  DE_ZIPVFS..#if !
148f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14900 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14910 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14920 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14930 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14940 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14950 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14960 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14970 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14980 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14990 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
149a0 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29   zipvfsInit_v2()
149b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
149c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
149d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
149e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
149f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14a00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14a10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14a20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14a40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14a50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14a60 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
14a70 73 49 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67  sInit_v3(int reg
14a80 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Dflt);..#endif..
14a90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14aa0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14ab0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14ac0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14ad0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14ae0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14af0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14b00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14b10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14b20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14b30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14b40 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14b50 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72  progress_handler
14b60 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
14b70 6f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72  ops, SQLiteProgr
14b80 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  essCallback func
14b90 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
14ba0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14bb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14bc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14bd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14be0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14bf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14c00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14c10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14c20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14c30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14c40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14c50 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14c60 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
14c70 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53  zer(IntPtr db, S
14c80 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43  QLiteAuthorizerC
14c90 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
14ca0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
14cb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14cc0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14cd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14ce0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14cf0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14d00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14d10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14d20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14d30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14d40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14d50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14d60 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14d70 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74  _update_hook(Int
14d80 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70  Ptr db, SQLiteUp
14d90 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  dateCallback fun
14da0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
14db0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14dc0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14dd0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14de0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14df0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14e00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14e10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14e20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14e30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14e40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14e50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14e60 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14e70 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f  lite3_commit_hoo
14e80 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
14e90 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  iteCommitCallbac
14ea0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
14eb0 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
14ec0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14ed0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14ee0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14ef0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14f00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14f10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14f20 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14f30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14f40 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14f50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14f60 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
14f70 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  tr sqlite3_trace
14f80 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
14f90 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  teTraceCallback 
14fa0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
14fb0 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20  ser);....    // 
14fc0 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f  Since sqlite3_co
14fd0 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76  nfig() takes a v
14fe0 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
14ff0 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
15000 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
15010 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
15020 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
15030 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77   calls that we w
15040 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66  ant to use...#if
15050 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15060 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15080 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
15090 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
150a0 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
150b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
150c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
150d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
150e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
150f0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
15100 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
15110 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
15120 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15130 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15140 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15150 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28  te3_config_none(
15160 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
15170 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20  num op);....#if 
15180 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15190 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
151a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
151b0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
151c0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
151d0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
151e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
151f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15200 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15210 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15220 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
15230 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
15240 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
15250 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15260 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15270 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15280 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51  e3_config_int(SQ
15290 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
152a0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29  m op, int value)
152b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
152c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
152d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
152e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
152f0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
15300 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
15310 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15320 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15330 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15340 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15350 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15360 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
15370 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
15380 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15390 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
153a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
153b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
153c0 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e  ig_log(SQLiteCon
153d0 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53  figOpsEnum op, S
153e0 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
153f0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
15400 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
15410 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15420 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15430 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15440 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15450 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15460 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15470 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15480 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15490 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
154a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
154b0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
154c0 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  r sqlite3_rollba
154d0 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  ck_hook(IntPtr d
154e0 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  b, SQLiteRollbac
154f0 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  kCallback func, 
15500 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
15510 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15520 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15530 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15540 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15550 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15560 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15570 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15580 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
155a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
155b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
155c0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
155d0 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
155e0 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
155f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15650 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15670 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15680 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
156a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
156b0 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73  qlite3_db_releas
156c0 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20  e_memory(IntPtr 
156d0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
156e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
156f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15700 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15710 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15760 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15770 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15780 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
15790 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
157a0 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ame(IntPtr db, I
157b0 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a  ntPtr dbName);..
157c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
157d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
157e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
157f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
15800 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
15810 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c  e3_db_filename",
15820 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15830 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15840 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15850 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
15860 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15870 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
15880 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
15890 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  ame")]..#endif..
158a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
158b0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
158c0 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
158d0 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e 74 50  ename_bytes(IntP
158e0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
158f0 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
15900 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15910 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15920 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15930 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15940 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15950 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15960 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15970 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15980 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15990 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
159a0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
159b0 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73  r sqlite3_next_s
159c0 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tmt(IntPtr db, I
159d0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
159e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
159f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15a00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15a10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15a20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15a30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15a40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15a50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15a60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15a70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15a80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15a90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15aa0 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e   sqlite3_exec(In
15ab0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
15ac0 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70  strSql, IntPtr p
15ad0 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74  vCallback, IntPt
15ae0 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66 20 49  r pvParam, ref I
15af0 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a  ntPtr errMsg);..
15b00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15b10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15b20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15b30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15b40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15b50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15b60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15b70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15b80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15b90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15ba0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15bb0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72  rn int sqlite3_r
15bc0 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e  elease_memory(in
15bd0 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69  t nBytes);....#i
15be0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15bf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15c10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15c20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15c30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15c40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15c50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15c60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15c70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15c80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
15c90 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  nt sqlite3_get_a
15ca0 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72  utocommit(IntPtr
15cb0 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
15cc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15cd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15ce0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15cf0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15d00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15d10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15d20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15d30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15d40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15d50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15d60 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
15d70 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
15d80 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c  3_extended_resul
15d90 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64  t_codes(IntPtr d
15da0 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a  b, int onoff);..
15db0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15dc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15dd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15de0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15df0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15e00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15e10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15e20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15e30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15e40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15e50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15e60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
15e70 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f  de sqlite3_errco
15e80 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
15e90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15ea0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15eb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15ec0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15ed0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15ee0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15ef0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15f00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15f10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15f20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15f30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15f40 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
15f50 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
15f60 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  ded_errcode(IntP
15f70 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
15f80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15f90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15fa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15fb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15fc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15fd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15fe0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15ff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16000 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16010 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16020 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
16030 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74  tr sqlite3_errst
16040 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  r(SQLiteErrorCod
16050 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35  e rc); /* 3.7.15
16060 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  + */....    // S
16070 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67  ince sqlite3_log
16080 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61  () takes a varia
16090 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73  ble argument lis
160a0 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76  t, we have to ov
160b0 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69  erload declarati
160c0 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20  ons..    // for 
160d0 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c  all possible cal
160e0 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65  ls.  For now, we
160f0 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69   are only exposi
16100 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69  ng a single stri
16110 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  ng, and..    // 
16120 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61  depend on the ca
16130 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74  ller to format t
16140 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20  he string...#if 
16150 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16160 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16180 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16190 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
161a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
161b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
161c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
161d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
161e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
161f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
16200 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51  d sqlite3_log(SQ
16210 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45  LiteErrorCode iE
16220 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a  rrCode, byte[] z
16230 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20  Format);....#if 
16240 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16250 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16270 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16280 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16290 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
162a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
162b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
162c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
162d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
162e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
162f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
16300 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
16310 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  l(IntPtr db, byt
16320 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74  e[] zDbName, int
16330 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67   op, IntPtr pArg
16340 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16350 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16360 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16370 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16380 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16390 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
163a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
163b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
163c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
163d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
163e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
163f0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16400 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69  lite3_backup_ini
16410 74 28 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c  t(IntPtr destDb,
16420 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d   byte[] zDestNam
16430 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65  e, IntPtr source
16440 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72  Db, byte[] zSour
16450 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ceName);....#if 
16460 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16470 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16480 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16490 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
164a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
164b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
164c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
164d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
164e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
164f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16500 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
16510 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
16520 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70  ite3_backup_step
16530 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20  (IntPtr backup, 
16540 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23  int nPage);....#
16550 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16560 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16580 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16590 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
165a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
165b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
165c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
165d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
165e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
165f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16600 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  int sqlite3_back
16610 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74  up_remaining(Int
16620 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
16630 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16640 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16650 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16660 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
16670 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
16680 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16690 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
166a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
166b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
166c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
166d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
166e0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63   int sqlite3_bac
166f0 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e  kup_pagecount(In
16700 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
16710 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16720 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16730 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16740 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16750 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16760 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16770 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
16780 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16790 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
167a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
167b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
167c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
167d0 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
167e0 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
167f0 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
16800 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16810 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16820 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16830 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16840 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16850 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16860 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16870 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16890 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
168a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
168b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
168c0 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
168d0 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
168e0 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
168f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
16900 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73  SQLite API calls
16910 20 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64   that are provid
16920 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77  ed by "well-know
16930 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68  n" extensions th
16940 61 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63  at may be static
16950 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e  ally..    // lin
16960 6b 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c  ked with the SQL
16970 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20  ite core native 
16980 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c  library currentl
16990 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23  y in use...    #
169a0 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e  region extension
169b0 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c   sqlite api call
169c0 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
169d0 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69  IRTUAL_TABLE..#i
169e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
169f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16a00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16a10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16a20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16a30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16a40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16a50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16a60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16a70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16a80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
16a90 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72  ntPtr sqlite3_cr
16aa0 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
16ab0 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62  module(IntPtr db
16ac0 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72  , IntPtr name, r
16ad0 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ef sqlite3_modul
16ae0 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72  e module, IntPtr
16af0 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44   pClientData, xD
16b00 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65  estroyModule xDe
16b10 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21  stroy);....#if !
16b20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16b40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16b50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16b60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16b70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16b80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16b90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16ba0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16bb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16bc0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
16bd0 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65   sqlite3_dispose
16be0 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  _module(IntPtr p
16bf0 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
16c00 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
16c10 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
16c70 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f  on sqlite intero
16c80 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45  p api calls (.NE
16c90 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
16ca0 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50  ork only)..#if P
16cb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16cc0 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
16cd0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
16ce0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16cf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
16d00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16d10 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
16d20 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
16d30 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
16d40 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67  Ptr db, ref long
16d50 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowId);....    
16d60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16d70 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
16d80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16d90 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16da0 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74  _memory_used_int
16db0 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79  erop(ref long by
16dc0 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
16dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16de0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
16df0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16e00 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
16e10 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69  mory_highwater_i
16e20 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74  nterop(int reset
16e30 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62  Flag, ref long b
16e40 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
16e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16e60 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
16e70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16e80 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16e90 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
16ea0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
16eb0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
16ec0 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
16ed0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
16ee0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16ef0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
16f00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16f10 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
16f20 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
16f30 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
16f40 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
16f50 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20  index, ref long 
16f60 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
16f70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16f80 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
16f90 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
16fa0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29  _int64_interop")
16fb0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
16fc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16fd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16fe0 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
16ff0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
17000 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
17010 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75  , ref ulong valu
17020 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
17030 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17040 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
17050 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
17060 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
17070 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  mn_double_intero
17080 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
17090 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
170a0 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
170b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
170c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
170d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
170e0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
170f0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
17100 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
17110 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
17120 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
17130 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17140 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17150 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17160 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
17170 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
17180 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
17190 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f  IntPtr p, ref do
171a0 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
171b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
171c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
171d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
171e0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
171f0 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
17200 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
17210 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  p, ref Int64 val
17220 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
17230 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17240 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
17250 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17260 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
17270 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
17280 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
17290 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
172a0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
172b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
172c0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
172d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
172e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
172f0 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
17300 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
17310 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
17320 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
17330 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17340 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
17350 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17360 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
17370 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
17380 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28  _module_interop(
17390 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
173a0 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
173b0 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  , IntPtr pModule
173c0 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20  , int iVersion, 
173d0 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 2c  xCreate xCreate,
173e0 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65  ..        xConne
173f0 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65  ct xConnect, xBe
17400 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64  stIndex xBestInd
17410 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  ex, xDisconnect 
17420 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20  xDisconnect,..  
17430 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20 78        xDestroy x
17440 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78  Destroy, xOpen x
17450 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c  Open, xClose xCl
17460 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69  ose, xFilter xFi
17470 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78  lter,..        x
17480 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66  Next xNext, xEof
17490 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78   xEof, xColumn x
174a0 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78  Column, xRowId x
174b0 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20 78  RowId, xUpdate x
174c0 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Update,..       
174d0 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20   xBegin xBegin, 
174e0 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f  xSync xSync, xCo
174f0 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52  mmit xCommit, xR
17500 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63  ollback xRollbac
17510 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e  k,..        xFin
17520 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
17530 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65  unction, xRename
17540 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70   xRename, xSavep
17550 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c  oint xSavepoint,
17560 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65 61  ..        xRelea
17570 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f  se xRelease, xRo
17580 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61  llbackTo xRollba
17590 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c  ckTo, IntPtr pCl
175a0 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20  ientData,..     
175b0 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c     xDestroyModul
175c0 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  e xDestroyModule
175d0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
175e0 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  // PLATFORM_COMP
175f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20  ACTFRAMEWORK && 
17600 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
17610 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
17620 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
17680 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61  on Native Delega
17690 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  tes..#if INTEROP
176a0 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
176b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
176c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
176d0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
176e0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
176f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17700 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17710 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17720 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17730 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20  Code xCreate(.. 
17740 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
17750 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
17760 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
17770 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
17780 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
17790 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
177a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
177b0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
177c0 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
177d0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17820 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
17830 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17840 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
17850 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
17860 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17870 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17880 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17890 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
178a0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e  eErrorCode xConn
178b0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
178c0 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
178d0 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
178e0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
178f0 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
17900 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
17910 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
17920 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
17930 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
17940 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
179a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
179b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
179c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
179d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
179e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
179f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
17a00 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
17a10 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
17a20 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  e xBestIndex(.. 
17a30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
17a40 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
17a50 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20  tPtr pIndex..   
17a60 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ab0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
17ac0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17ad0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
17ae0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
17af0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
17b00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17b10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
17b20 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
17b30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
17b40 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  Disconnect(..   
17b50 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
17b60 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
17b70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17bc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17bd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17be0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
17bf0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
17c00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17c10 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17c20 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17c30 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17c40 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a  Code xDestroy(..
17c50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17c60 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
17c70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17cc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17cd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17ce0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
17cf0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
17d00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
17d10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17d20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
17d30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
17d40 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a  rorCode xOpen(..
17d50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17d60 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
17d70 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f  ef IntPtr pCurso
17d80 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
17d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17de0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17df0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17e00 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
17e10 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
17e20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17e30 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17e40 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17e50 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17e60 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20  Code xClose(..  
17e70 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
17e80 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
17e90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17ee0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17ef0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f00 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
17f10 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
17f20 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
17f30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17f40 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
17f50 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
17f60 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
17f70 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
17f80 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
17f90 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
17fa0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69          IntPtr i
17fb0 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20  dxStr,..        
17fc0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
17fd0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a     IntPtr argv..
17fe0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
18040 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18050 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18060 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
18070 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
18080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18090 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
180a0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
180b0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
180c0 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20  e xNext(..      
180d0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
180e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
18140 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18150 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18160 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
18170 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
18180 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18190 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
181a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
181b0 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20  ate int xEof(.. 
181c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
181d0 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
181e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
181f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18240 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18250 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
18260 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
18270 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
18280 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
18290 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
182a0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
182b0 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e  rrorCode xColumn
182c0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
182d0 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
182e0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74      IntPtr pCont
182f0 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  ext,..        in
18300 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d  t index..    );.
18310 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18360 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
18370 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18380 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
18390 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
183a0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
183b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
183c0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
183d0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
183e0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
183f0 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  d(..        IntP
18400 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
18410 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
18420 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  wId..    );.... 
18430 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18480 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18490 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
184a0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
184b0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
184c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
184d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
184e0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
184f0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
18500 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d  orCode xUpdate(.
18510 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
18520 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
18530 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
18540 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
18550 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e  .        ref lon
18560 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d  g rowId..    );.
18570 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185c0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
185d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
185e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
185f0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
18600 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
18610 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18620 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
18630 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
18640 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
18650 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
18660 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
18670 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
186d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
186e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
186f0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
18700 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
18710 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18720 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
18730 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
18740 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e  teErrorCode xSyn
18750 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c(..        IntP
18760 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
18770 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
187d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
187e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
187f0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
18800 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
18810 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18820 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
18830 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
18840 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d  teErrorCode xCom
18850 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  mit(..        In
18860 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
18870 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
18880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
188d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
188e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
188f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
18900 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
18910 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
18930 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
18940 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
18950 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
18960 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
18970 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
189d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
189e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
189f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
18a00 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
18a10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18a20 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
18a30 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
18a40 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74  e int xFindFunct
18a50 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ion(..        In
18a60 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
18a70 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a       int nArg,..
18a80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
18a90 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72  Name,..        r
18aa0 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  ef SQLiteCallbac
18ab0 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  k callback,..   
18ac0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
18ad0 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29  pUserData..    )
18ae0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b30 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
18b40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18b50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
18b60 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
18b70 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
18b80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18b90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
18ba0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
18bb0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65  iteErrorCode xRe
18bc0 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49  name(..        I
18bd0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
18be0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65        IntPtr zNe
18bf0 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  w..    );....   
18c00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18c50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18c60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18c70 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
18c80 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
18c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18ca0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
18cb0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
18cc0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
18cd0 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28  Code xSavepoint(
18ce0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
18cf0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
18d00 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
18d10 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
18d70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18d80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18d90 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
18da0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
18db0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18dc0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
18dd0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
18de0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
18df0 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20  de xRelease(..  
18e00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
18e10 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
18e20 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
18e30 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
18e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
18e90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18ea0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
18eb0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
18ec0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
18ed0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18ee0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
18ef0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
18f00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
18f10 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
18f20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
18f30 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
18f40 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
18f50 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
18fb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18fc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
18fd0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
18fe0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
18ff0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19000 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
19010 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f  blic delegate vo
19020 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  id xDestroyModul
19030 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  e(IntPtr pClient
19040 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Data);..#endif..
19050 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
19060 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190b0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
190c0 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72   Native Structur
190d0 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  es..#if INTEROP_
190e0 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20  VIRTUAL_TABLE.. 
190f0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
19100 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
19110 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
19120 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
19130 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
19140 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
19150 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  lic int iVersion
19160 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
19170 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  c xCreate xCreat
19180 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
19190 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e  ic xConnect xCon
191a0 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
191b0 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78  ublic xBestIndex
191c0 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20   xBestIndex;..  
191d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 69        public xDi
191e0 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
191f0 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  nect;..        p
19200 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78  ublic xDestroy x
19210 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20  Destroy;..      
19220 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78    public xOpen x
19230 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  Open;..        p
19240 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c  ublic xClose xCl
19250 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ose;..        pu
19260 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46 69  blic xFilter xFi
19270 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70  lter;..        p
19280 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78  ublic xNext xNex
19290 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
192a0 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20  ic xEof xEof;.. 
192b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
192c0 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a  olumn xColumn;..
192d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
192e0 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20  RowId xRowId;.. 
192f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 55         public xU
19300 70 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a  pdate xUpdate;..
19310 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
19320 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20  Begin xBegin;.. 
19330 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53         public xS
19340 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20  ync xSync;..    
19350 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d      public xComm
19360 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20  it xCommit;..   
19370 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
19380 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b  lback xRollback;
19390 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
193a0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78   xFindFunction x
193b0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20  FindFunction;.. 
193c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
193d0 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a  ename xRename;..
193e0 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d          /* The m
193f0 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
19400 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
19410 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64   the sqlite3_mod
19420 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20  ule..         * 
19430 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62  object.  Those b
19440 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
19450 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74  sion 2 and great
19460 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  er. */..        
19470 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e  public xSavepoin
19480 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20  t xSavepoint;.. 
19490 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
194a0 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b  elease xRelease;
194b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
194c0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f   xRollbackTo xRo
194d0 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d  llbackTo;..    }
194e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
19540 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
19550 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
19560 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19570 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74  truct sqlite3_vt
19580 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ab..    {..     
19590 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
195a0 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
195b0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52     public int nR
195c0 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52  ef; /* NO LONGER
195d0 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
195e0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
195f0 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d  zErrMsg;..    }.
19600 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
19660 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
19670 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
19680 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19690 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
196a0 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d  b_cursor..    {.
196b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
196c0 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20  IntPtr pVTab;.. 
196d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
196e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
19730 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
19740 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
19750 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
19760 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
19770 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
19780 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  nt..    {..     
19790 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
197a0 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
197b0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
197c0 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
197d0 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
197e0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
197f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
19800 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
19810 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
19820 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d  f (constraint !=
19830 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
19840 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19850 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
19860 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c   constraint.iCol
19870 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
19880 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74        op = const
19890 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20  raint.op;..     
198a0 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62 6c             usabl
198b0 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  e = constraint.u
198c0 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
198d0 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66          iTermOff
198e0 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  set = constraint
198f0 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20  .iTermOffset;.. 
19900 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19910 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19920 20 20 20 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 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19970 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
19980 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
19990 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
199a0 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f  IndexConstraintO
199b0 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70  p op;..        p
199c0 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c  ublic byte usabl
199d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
199e0 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73  ic int iTermOffs
199f0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
19a00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19a50 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
19a60 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
19a70 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
19a80 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
19a90 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
19aa0 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20  derby..    {..  
19ab0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
19ac0 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
19ad0 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  by(..           
19ae0 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
19af0 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20  rBy orderBy..   
19b00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
19b10 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
19b20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
19b30 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64           if (ord
19b40 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  erBy != null).. 
19b50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
19b70 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e  olumn = orderBy.
19b80 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
19b90 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20 3d            desc =
19ba0 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a   orderBy.desc;..
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19bc0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19bd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
19c20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
19c30 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f  t iColumn; /* Co
19c40 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a  lumn number */..
19c50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
19c60 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54  yte desc;   /* T
19c70 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46  rue for DESC.  F
19c80 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f  alse for ASC. */
19c90 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19cf0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
19d00 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
19d10 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
19d20 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
19d30 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
19d40 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20  raint_usage..   
19d50 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
19d60 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
19d70 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
19d80 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
19d90 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
19da0 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74  raintUsage const
19db0 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20  raintUsage..    
19dc0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
19dd0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
19de0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
19df0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
19e00 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e  traintUsage != n
19e10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19e20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19e30 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d       argvIndex =
19e40 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
19e50 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20  .argvIndex;..   
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69               omi
19e70 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  t = constraintUs
19e80 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  age.omit;..     
19e90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19ea0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
19eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ef0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19f00 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67    public int arg
19f10 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30  vIndex; /* if >0
19f20 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20  , constraint is 
19f30 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20  part of argv to 
19f40 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20  xFilter */..    
19f50 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
19f60 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20  omit;     /* Do 
19f70 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20  not code a test 
19f80 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61  for this constra
19f90 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  int */..    }...
19fa0 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ff0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1a000 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1a010 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1a020 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1a030 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
1a040 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20  _info..    {..  
1a050 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20        /* Inputs 
1a060 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1a070 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69  ic int nConstrai
1a080 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66  nt; /* Number of
1a090 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e   entries in aCon
1a0a0 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
1a0b0 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1a0c0 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a  r aConstraint;..
1a0d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1a0e0 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20  nt nOrderBy;    
1a0f0 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74  /* Number of ent
1a100 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79  ries in aOrderBy
1a110 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1a120 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65  lic IntPtr aOrde
1a130 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  rBy;..        /*
1a140 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20   Outputs */..   
1a150 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
1a160 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  tr aConstraintUs
1a170 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  age;..        pu
1a180 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b  blic int idxNum;
1a190 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
1a1a0 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
1a1b0 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
1a1c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1a1d0 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72  ic string idxStr
1a1e0 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69  ;        /* Stri
1a1f0 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74  ng, possibly obt
1a200 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
1a210 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20  e3_malloc */..  
1a220 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1a230 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74   needToFreeIdxSt
1a240 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74  r; /* Free idxSt
1a250 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  r using sqlite3_
1a260 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a  free() if true *
1a270 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1a280 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e  c int orderByCon
1a290 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20  sumed;  /* True 
1a2a0 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72  if output is alr
1a2b0 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d  eady ordered */.
1a2c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a2d0 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64  double estimated
1a2e0 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74  Cost; /* Estimat
1a2f0 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67  ed cost of using
1a300 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a   this index */..
1a310 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c          public l
1a320 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52 6f 77  ong estimatedRow
1a330 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65  s;   /* Estimate
1a340 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  d number of rows
1a350 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20   returned */..  
1a360 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
1a370 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64  iteIndexFlags id
1a380 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20  xFlags; /* Mask 
1a390 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f  of SQLITE_INDEX_
1a3a0 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d  SCAN_* flags */.
1a3b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a3c0 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20  long colUsed;   
1a3d0 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20        /* Input: 
1a3e0 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  Mask of columns 
1a3f0 75 73 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e  used by statemen
1a400 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e  t */..    }..#en
1a410 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
1a420 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ion..  }....  //
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a480 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a490 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a4a0 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1a4b0 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
1a4c0 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
1a4d0 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
1a4e0 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
1a4f0 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
1a500 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
1a510 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
1a520 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
1a530 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
1a540 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
1a550 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
1a560 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
1a570 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
1a580 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
1a590 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
1a5a0 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
1a5b0 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
1a5c0 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
1a5d0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
1a5e0 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
1a5f0 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
1a600 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
1a610 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
1a620 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
1a630 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
1a640 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
1a650 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
1a660 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
1a670 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
1a680 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
1a690 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
1a6a0 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
1a6b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1a6c0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
1a6d0 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
1a6e0 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
1a6f0 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
1a700 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
1a710 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
1a720 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
1a730 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
1a740 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1a750 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
1a760 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
1a770 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
1a780 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
1a790 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
1a7a0 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
1a7b0 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
1a7c0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
1a7d0 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
1a7e0 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
1a7f0 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
1a800 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
1a810 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1a820 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
1a830 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
1a840 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
1a850 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
1a860 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
1a870 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
1a880 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1a890 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
1a8a0 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
1a8b0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
1a8c0 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
1a8d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
1a8e0 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
1a8f0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
1a900 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
1a910 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65    }....  }....#e
1a920 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1a980 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
1a990 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
1a9a0 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
1a9b0 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
1a9c0 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
1a9d0 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
1a9e0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
1a9f0 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
1aa00 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
1aa10 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
1aa20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1aa30 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
1aa40 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
1aa50 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
1aa60 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
1aa70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1aa80 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
1aa90 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
1aaa0 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
1aab0 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
1aac0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
1aad0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1aae0 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
1aaf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
1ab00 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
1ab10 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
1ab20 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
1ab30 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
1ab40 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
1ab50 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
1ab60 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1ab70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
1abc0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1abd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1abe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
1abf0 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
1ac00 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
1ac10 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
1ac20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1ac80 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  ate bool ownHand
1ac90 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1acf0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1ad00 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
1ad10 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
1ad20 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1ad30 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  db)..        {..
1ad40 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ad50 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  db != null)..   
1ad60 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1ad70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ad80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1ad90 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1ada0 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  (db.syncRoot)..#
1adb0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1adc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ade0 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d  turn db.handle;.
1adf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ae00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ae10 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
1ae20 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1ae30 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
1ae40 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
1aea0 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  rnal SQLiteConne
1aeb0 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50  ctionHandle(IntP
1aec0 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48  tr db, bool ownH
1aed0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
1aee0 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61      : this(ownHa
1aef0 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
1af00 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1af10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1af20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1af30 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1af40 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1af50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1af60 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e       this.ownHan
1af70 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b  dle = ownHandle;
1af80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1af90 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
1afa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1afb0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1afc0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b010 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1b020 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1b030 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e  nHandle(bool own
1b040 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
1b050 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
1b060 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1b070 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
1b080 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1b090 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
1b0a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1b0b0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
1b0c0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 55 6e 73  ncrement(ref Uns
1b0d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1b0e0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1b0f0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1b100 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b110 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b150 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b160 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1b170 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1b180 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1b190 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1b1a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b1b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1b1c0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1b1d0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1b1e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b1f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1b200 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
1b210 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
1b220 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b230 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1b240 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1b250 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b260 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1b270 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1b280 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
1b290 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
1b2a0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
1b2b0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
1b2c0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
1b2d0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
1b2e0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
1b2f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b300 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
1b310 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b330 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
1b340 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
1b350 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b370 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
1b380 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1b390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b3a0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
1b3b0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
1b3c0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
1b3d0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1b3e0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1b3f0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1b400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b410 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1b420 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1b440 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73  ce.WriteLine(Uns
1b450 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1b460 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
1b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b480 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
1b490 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
1b4a0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1b4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
1b4c0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
1b4d0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
1b4e0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1b4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b500 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b510 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1b520 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b540 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
1b550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b560 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1b570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b580 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b590 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
1b5a0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1b5b0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1b5c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5e0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
1b5f0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
1b600 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
1b610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b620 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1b630 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1b640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b650 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1b660 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b670 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1b680 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1b690 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
1b6a0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1b6c0 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1b6d0 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
1b6e0 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
1b6f0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1b700 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b710 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1b720 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1b730 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1b740 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1b750 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1b760 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
1b770 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
1b780 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1b790 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1b7a0 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
1b7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1b7c0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1b7d0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1b7e0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1b7f0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1b800 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b820 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1b830 65 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e(UnsafeNativeMe
1b840 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1b850 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1b870 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1b880 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8a0 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
1b8b0 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
1b8c0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
1b8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8e0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
1b8f0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1b900 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b920 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1b930 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b940 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1b950 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1b960 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b970 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
1b980 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1b990 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b9a0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1b9b0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1b9c0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b9f0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1ba00 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
1ba10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1ba20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1ba30 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1ba40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1ba50 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
1ba60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ba70 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1ba80 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ba90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1bae0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1baf0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1bb00 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
1bb10 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
1bb20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bb30 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
1bb40 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1bb50 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
1bb60 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1bb70 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
1bb80 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1bb90 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1bba0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1bbf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
1bc00 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20  l OwnHandle..   
1bc10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bc20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1bc30 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1bc40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bc50 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1bc60 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1bc70 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1bca0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77         return ow
1bcb0 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
1bcc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bcd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bce0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1bcf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1bd40 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1bd50 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
1bd60 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
1bd70 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
1bd80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1bd90 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1bda0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1bdc0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1bdd0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1bde0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1be00 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
1be10 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1be20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1be30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1be40 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1be50 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bea0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1beb0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1bec0 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
1bed0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
1bee0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1bef0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1bf00 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1bf10 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1bf20 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1bf30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bf40 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
1bf50 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
1bf60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1bf70 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1bf80 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1bf90 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1bff0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1c000 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
1c010 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
1c020 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
1c030 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
1c040 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
1c050 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
1c060 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1c070 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
1c080 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
1c090 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
1c0a0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1c0b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c0c0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
1c0d0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
1c0e0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
1c0f0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
1c100 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1c110 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c160 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
1c170 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1c180 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
1c190 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c1e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1c1f0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
1c200 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
1c210 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
1c220 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
1c230 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c240 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
1c250 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1c260 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1c270 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c280 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1c290 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
1c2a0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1c2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c2c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c2d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c2e0 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
1c2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c300 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1c310 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1c320 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
1c330 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1c340 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c350 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
1c390 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
1c3a0 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
1c3b0 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
1c3c0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
1c3d0 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
1c3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1c3f0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
1c400 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1c410 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1c430 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1c440 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1c450 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c460 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
1c470 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
1c480 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1c490 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
1c4a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c4b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c500 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c510 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
1c520 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
1c530 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
1c540 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
1c550 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1c560 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1c570 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1c580 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
1c590 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1c5a0 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1c5b0 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
1c5c0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
1c5d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1c5e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c630 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1c640 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1c650 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1c660 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1c670 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1c680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1c690 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c6a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c6c0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1c6d0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1c6e0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c700 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1c710 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
1c720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1c730 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1c740 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1c750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c760 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
1c770 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
1c780 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
1c790 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
1c7a0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1c7b0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1c7c0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c7f0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1c800 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74  teLine(UnsafeNat
1c810 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  iveMethods.Strin
1c820 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1c830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c840 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1c850 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c870 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1c880 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c  Statement: {0}",
1c890 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
1c8a0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8d0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1c8e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c8f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1c900 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
1c910 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1c920 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
1c930 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c950 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
1c960 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c980 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1c9a0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
1c9b0 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
1c9c0 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
1c9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9e0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
1c9f0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca10 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1ca20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
1ca30 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca50 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1ca60 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1ca80 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1ca90 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1caa0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
1cab0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1cac0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cad0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1cae0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1caf0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1cb00 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1cb10 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
1cb20 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1cb30 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
1cb40 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1cb50 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1cb60 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
1cb70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1cb80 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1cb90 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1cba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cbb0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1cbc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1cbe0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e  ace.WriteLine(Un
1cbf0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1cc00 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1cc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cc20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1cc30 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1cc40 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1cc60 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1cc70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1cc80 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cca0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1ccb0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1ccc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ccd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1cce0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1ccf0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1cd00 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1cd10 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1cd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1cd30 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1cd40 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1cd50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1cd60 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1cd70 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1cd80 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1cd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1cda0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cdb0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1cdc0 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1cdd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1cde0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1cdf0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1ce00 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1ce10 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1ce20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1ce30 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1ce40 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ce50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1cea0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1ceb0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1cec0 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1ced0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1cee0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1cef0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1cf00 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1cf10 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
1cf20 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1cf30 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
1cf40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
1cf50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1cfb0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1cfc0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
1cfd0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
1cfe0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
1cff0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1d000 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1d010 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d020 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1d030 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1d040 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1d050 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d060 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1d070 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
1d080 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1d0b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d0c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d110 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1d120 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1d130 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
1d140 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
1d150 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1d160 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d170 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1d180 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1d190 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1d1a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d1b0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
1d1c0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
1d1d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1d1e0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1d1f0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1d200 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d260 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
1d270 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
1d280 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
1d290 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
1d2a0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
1d2b0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
1d2c0 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
1d2d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1d2e0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
1d2f0 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
1d300 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1d310 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1d320 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d330 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
1d340 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
1d350 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
1d360 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
1d370 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1d380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d3d0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1d3e0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1d3f0 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
1d400 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d450 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1d460 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1d470 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1d480 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
1d490 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
1d4a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1d4b0 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
1d4c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1d4d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1d4e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d500 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
1d510 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1d520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d530 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d540 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1d550 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
1d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d570 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1d580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1d590 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
1d5a0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1d5b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d600 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
1d610 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
1d620 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
1d630 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1d640 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
1d650 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1d660 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
1d670 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1d680 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d690 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1d6a0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1d6b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1d6c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d6d0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
1d6e0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
1d6f0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1d700 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
1d710 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d720 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d780 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1d790 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
1d7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
1d7b0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
1d7c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1d7d0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1d7e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1d7f0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
1d800 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1d810 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1d820 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
1d830 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
1d840 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1d850 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d8a0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
1d8b0 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
1d8c0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1d8d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1d8e0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1d8f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1d900 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d910 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1d930 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
1d940 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
1d950 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
1d960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1d970 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
1d980 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
1d990 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1d9a0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
1d9b0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9d0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
1d9e0 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63  hBackup(cnn, loc
1d9f0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
1da00 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1da10 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1da20 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1da30 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1da40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1da60 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55  race.WriteLine(U
1da70 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1da80 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1da90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1daa0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1dab0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1dac0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1dae0 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
1daf0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
1db00 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1db10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1db30 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1db40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1db50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1db60 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
1db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1db80 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1db90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dba0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1dbb0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
1dbc0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1dbd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1dbe0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1dbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc00 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1dc10 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68  ishBackup(cnn, h
1dc20 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
1dc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc40 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
1dc50 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1dc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dc80 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
1dc90 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1dca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1dcb0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1dcc0 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1dcd0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1dce0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1dcf0 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
1dd00 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
1dd10 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1dd20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1dd30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1dd40 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
1dd50 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1dd60 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1dd70 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1dd80 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1dd90 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1dda0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1ddb0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
1ddc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1ddd0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1dde0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1ddf0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1de00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1de10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1de20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1de30 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1de40 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e  riteLine(UnsafeN
1de50 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
1de60 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de80 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1de90 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1dea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1deb0 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
1dec0 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
1ded0 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1def0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
1df00 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1df10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1df20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1df30 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1df40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1df60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1df70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1df80 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
1df90 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1dfa0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dfb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1dfc0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1dfd0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1dfe0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1dff0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e000 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1e010 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
1e020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e030 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e040 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
1e050 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e060 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
1e070 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e080 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1e090 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1e0a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1e0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e0f0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
1e100 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
1e110 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
1e120 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
1e130 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e140 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
1e150 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
1e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e170 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1e180 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
1e190 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1e1a0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1e1b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1e200 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1e210 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
1e220 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
1e230 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1e240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1e250 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1e260 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e280 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1e290 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1e2a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2c0 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
1e2d0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
1e2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e2f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1e300 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1e310 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e360 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
1e370 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1e380 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
1e390 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
1e3a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1e3b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e3c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1e3d0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1e3e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1e3f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e400 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
1e410 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
1e420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1e430 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1e440 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
1e450 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..