System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact db920b45d2a338d64c61eb684d482c3e0e5a1882:


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 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
1710: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
1720: 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67  ocess is running
1730: 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57   on one of the W
1740: 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f  indows..      //
1750: 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d  / [sub-]platform
1760: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1770: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1780: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1790: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
17a0: 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  o when running o
17b0: 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72  n Windows; other
17c0: 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20  wise, zero...   
17d0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17e0: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
17f0: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
1800: 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20  Windows()..     
1810: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c   {..          Pl
1820: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
1830: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
1840: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
1850: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
1860: 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d     if ((platform
1870: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
1880: 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20  .Win32S) ||..   
1890: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
18a0: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
18b0: 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77  rmID.Win32Window
18c0: 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  s) ||..         
18d0: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
18e0: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
18f0: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
1900: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
1910: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
1920: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
1930: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1940: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1950: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
1960: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
1970: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
1980: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
1a00: 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  is a wrapper aro
1a10: 75 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  und the..      /
1a20: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  // <see cref="St
1a30: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72  ring.Format(IFor
1a40: 6d 61 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69  matProvider,Stri
1a50: 6e 67 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e  ng,Object[])" />
1a60: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1a70: 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20  /// On Mono, it 
1a80: 68 61 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20  has to call the 
1a90: 6d 65 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20  method overload 
1aa0: 77 69 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20  without the..   
1ab0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1ac0: 3d 22 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65  ="IFormatProvide
1ad0: 72 22 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c  r" /> parameter,
1ae0: 20 64 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e   due to a bug in
1af0: 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   Mono...      //
1b00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1b20: 61 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d  ame="provider">.
1b30: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
1b40: 69 73 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74  is used for cult
1b50: 75 72 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72  ure-specific for
1b60: 6d 61 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  matting...      
1b70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1b80: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1b90: 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20  ame="format">.. 
1ba0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72       /// The for
1bb0: 6d 61 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  mat string...   
1bc0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1bd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1be0: 6d 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a  m name="args">..
1bf0: 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
1c00: 61 79 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74  ay the objects t
1c10: 6f 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20  o format...     
1c20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c30: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1c40: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
1c50: 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69  e resulting stri
1c60: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
1c70: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1c80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c90: 20 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f   string StringFo
1ca0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1cb0: 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72   IFormatProvider
1cc0: 20 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20   provider,..    
1cd0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72        string for
1ce0: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
1cf0: 70 61 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20  params object[] 
1d00: 61 72 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  args..          
1d10: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
1d20: 20 20 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f        if (IsMono
1d30: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
1d40: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
1d50: 2e 46 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20  .Format(format, 
1d60: 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  args);..        
1d70: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
1d80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
1d90: 69 6e 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69  ing.Format(provi
1da0: 64 65 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67  der, format, arg
1db0: 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  s);..      }....
1dc0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1e20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1e30: 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74  Attempts to init
1e40: 69 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73  ialize this clas
1e50: 73 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67  s by pre-loading
1e60: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
1e70: 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  te..      /// li
1e80: 62 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72  brary for the pr
1e90: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
1ea0: 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
1eb0: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
1ec0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ed0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
1ee0: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  al static void I
1ef0: 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20  nitialize()..   
1f00: 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45     {..#if SQLITE
1f10: 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45  _STANDARD || USE
1f20: 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20  _INTEROP_DLL || 
1f30: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f40: 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50  FRAMEWORK..#if P
1f50: 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49  RELOAD_NATIVE_LI
1f60: 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20  BRARY..         
1f70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1f80: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
1f90: 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  No_PreLoadSQLite
1fa0: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
1fb0: 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74  riable is set (t
1fc0: 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  o..          // 
1fd0: 20 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c        anything),
1fe0: 20 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70   skip all our sp
1ff0: 65 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73  ecial code and s
2000: 69 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20  imply return... 
2010: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2020: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
2030: 74 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50  ttingValue("No_P
2040: 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e  reLoadSQLite", n
2050: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2070: 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65  urn;..#endif..#e
2080: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2090: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
20a0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
20b0: 20 20 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d     {..#if DEBUG.
20c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
20d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
20e0: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
20f0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 73 74 61   the list of sta
2100: 74 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c  tistics that wil
2110: 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  l contain the.. 
2120: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2130: 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20        number of 
2140: 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69  times each setti
2150: 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65 65  ng value has bee
2160: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
2170: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2180: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
2190: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
21a0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
21b0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
21c0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  ngReadCounts = n
21d0: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
21e0: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 23  ring, int>();..#
21f0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2200: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2210: 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f           // TODO
2220: 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73  : Make sure this
2230: 20 6c 69 73 74 20 69 73 20 75 70 64 61 74 65 64   list is updated
2240: 20 69 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   if the supporte
2250: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
2260: 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
2270: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
2280: 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c   names and/or pl
2290: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20  atform names..  
22a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
22b0: 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20       changes... 
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
22d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
22e0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
22f0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
2300: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2310: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2330: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2340: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
2350: 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20  eate the map of 
2360: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
2370: 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20  ecture names..  
2380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2390: 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74  //       to plat
23a0: 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67  form names using
23b0: 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74   a case-insensit
23c0: 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  ive string..    
23d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
23e0: 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e         comparer.
23f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2400: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2410: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
2420: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
2430: 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20  latforms =..    
2440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2450: 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79    new Dictionary
2460: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
2470: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
2490: 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69  ingComparer.Ordi
24a0: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
24b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
24d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
24e0: 54 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69  TE: Setup the li
24f0: 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e  st of platform n
2500: 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ames associated 
2510: 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  with..          
2520: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2530: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 70   the supported p
2540: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
2550: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
2560: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2580: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
2590: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
25a0: 41 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33  Add("x86", "Win3
25b0: 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  2");..          
25c0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
25d0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
25e0: 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36  tforms.Add("AMD6
25f0: 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20  4", "x64");..   
2600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
2610: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
2620: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
2630: 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69  d("IA64", "Itani
2640: 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  um");..         
2650: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
2660: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
2670: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d  atforms.Add("ARM
2680: 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20  ", "WinCE");..  
2690: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
26a0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
26b0: 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45  DARD || USE_INTE
26c0: 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46  ROP_DLL || PLATF
26d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26e0: 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41  WORK..#if PRELOA
26f0: 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
2700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2710: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2720: 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61    // BUGBUG: Wha
2730: 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70  t about other ap
2740: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
2750: 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s?..            
2760: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2770: 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e      if (_SQLiteN
2780: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
2790: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
27a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73        string bas
27d0: 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c  eDirectory = nul
27e0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
27f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
2800: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2810: 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  re = null;....  
2820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2830: 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20  /* IGNORED */.. 
2840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2850: 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
2860: 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
2870: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2880: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72  baseDirectory, r
2890: 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ef processorArch
28a0: 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
28b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
28e0: 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f  ttempt to pre-lo
28f0: 61 64 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ad the SQLite co
2900: 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a  re library (or..
2910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2920: 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72    //       inter
2930: 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61 6e 64  op assembly) and
2940: 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68 65 20   store both the 
2950: 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  file name..     
2960: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2970: 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69 76 65        and native
2980: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
2990: 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65 2e 0d  or later usage..
29a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
29c0: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
29d0: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
29e0: 20 20 20 20 20 20 20 20 20 20 50 72 65 4c 6f 61            PreLoa
29f0: 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20  dSQLiteDll(..   
2a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a10: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
2a20: 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  , processorArchi
2a30: 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  tecture,..      
2a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a50: 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ref _SQLiteNativ
2a60: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
2a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a80: 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c          ref _SQL
2a90: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
2aa0: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2ab0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2ac0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2ad0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
2ae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
2b40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2b50: 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70  / Combines two p
2b60: 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  ath strings...  
2b70: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b80: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2b90: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31  aram name="path1
2ba0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2bb0: 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52  e first path -OR
2bc0: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
2bd0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2be0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2bf0: 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20  me="path2">..   
2c00: 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e     /// The secon
2c10: 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c  d path -OR- null
2c20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
2c30: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
2c40: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2c50: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e    /// The combin
2c60: 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d  ed path string -
2c70: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68  OR- null if both
2c80: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
2c90: 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   path..      ///
2ca0: 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c   strings are nul
2cb0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
2cc0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2cd0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
2ce0: 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69  tring MaybeCombi
2cf0: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
2d00: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c     string path1,
2d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
2d20: 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20  ng path2..      
2d30: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
2d40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
2d50: 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th1 != null)..  
2d60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d70: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
2d80: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2da0: 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69  eturn Path.Combi
2db0: 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32 29  ne(path1, path2)
2dc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2dd0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2de0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2df0: 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20  path1;..        
2e00: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
2e10: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  lse..          {
2e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e30: 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c  if (path2 != nul
2e40: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2e50: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
2e60: 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h2;..           
2e70: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
2e80: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e90: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
2ea0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
2eb0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2f20: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
2f30: 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e  urns the XML con
2f40: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
2f50: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73  name for the ass
2f60: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  embly..      ///
2f70: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
2f80: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
2f90: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
2fa0: 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  nents...      //
2fb0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2fc0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2fd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2fe0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
2ff0: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52  on file name -OR
3000: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
3010: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
3020: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  d..      /// or 
3030: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d  does not exist..
3040: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
3050: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
3060: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
3070: 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  ng GetXmlConfigF
3080: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
3090: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74   {..          st
30a0: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d  ring directory;.
30b0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
30c0: 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23  g fileName;....#
30d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
30e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
30f0: 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f           directo
3100: 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43  ry = AppDomain.C
3110: 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73  urrentDomain.Bas
3120: 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20  eDirectory;..   
3130: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
3140: 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
3150: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d  th(directory, Xm
3160: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
3170: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
3180: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
3190: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
31a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31b0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e 64 69  fileName;..#endi
31c0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 64  f....          d
31d0: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73  irectory = GetAs
31e0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
31f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69  );..          fi
3200: 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f  leName = MaybeCo
3210: 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74  mbinePath(direct
3220: 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
3230: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
3240: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
3250: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
3260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3270: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
3280: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
3290: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
32a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
32b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3300: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3310: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
3320: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
3330: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
3340: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
3350: 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20  sing the XML..  
3360: 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
3370: 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f  ation file and/o
3380: 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  r the environmen
3390: 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20  t variables for 
33a0: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
33b0: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61     /// process a
33c0: 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e  nd/or the curren
33d0: 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61  t system, when a
33e0: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
33f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3400: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3410: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
3420: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
3430: 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  me of the settin
3440: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
3450: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
3460: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
3470: 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20  efault">..      
3480: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
3490: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
34a0: 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20  the setting has 
34b0: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
34c0: 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f  licitly..      /
34d0: 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20  // or cannot be 
34e0: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
34f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3500: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3510: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3520: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
3530: 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68   setting -OR- th
3540: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
3550: 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20  specified by..  
3560: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
3570: 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  f name="default"
3580: 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f   /> if it has no
3590: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
35a0: 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20  citly or..      
35b0: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
35c0: 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65  termined.  By de
35d0: 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72  fault, all refer
35e0: 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e  ences to existin
35f0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  g..      /// env
3600: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
3610: 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e  es will be expan
3620: 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72  ded to their cor
3630: 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65  responding value
3640: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  s..      /// wit
3650: 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f  hin the value to
3660: 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c   be returned unl
3670: 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22  ess either the "
3680: 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20  No_Expand" or.. 
3690: 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70       /// "No_Exp
36a0: 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61  and_<paramref na
36b0: 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e  me="name" />" en
36c0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
36d0: 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20  le is set [to.. 
36e0: 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e       /// anythin
36f0: 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  g]...      /// <
3700: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3710: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3720: 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69   string GetSetti
3730: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
3740: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
3750: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
3760: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
3770: 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f  default /* in */
3780: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
3790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37a0: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
37b0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
37c0: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
37d0: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
37e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3820: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3830: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
3840: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
3850: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
3860: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3870: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3880: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3890: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
38a0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
38b0: 55 70 64 61 74 65 20 73 74 61 74 69 73 74 69 63  Update statistic
38c0: 73 20 66 6f 72 20 74 68 69 73 20 73 65 74 74 69  s for this setti
38d0: 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ng value...     
38e0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
38f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
3900: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
3910: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
3920: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
3940: 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20  t count;....    
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3960: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
3970: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
3980: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
3990: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
39a0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
39b0: 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  ReadCounts[name]
39c0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
39d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39e0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
3a00: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 41  tingReadCounts.A
3a10: 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20  dd(name, 1);..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
3a30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
3a40: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
3a50: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
3a60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
3ab0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
3ac0: 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  value = null;...
3ad0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
3ae0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
3af0: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
3b00: 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a  expand = true;..
3b10: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3b20: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
3b30: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
3b40: 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
3b50: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
3b60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3b70: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
3b80: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
3b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
3ba0: 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
3bb0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
3bc0: 56 61 72 69 61 62 6c 65 28 53 74 72 69 6e 67 46  Variable(StringF
3bd0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
3be0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
3bf0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
3c00: 75 6c 74 75 72 65 2c 20 22 4e 6f 5f 45 78 70 61  ulture, "No_Expa
3c10: 6e 64 5f 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20  nd_{0}",..      
3c20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65              name
3c30: 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  )) != null)..   
3c40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3c50: 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d          expand =
3c60: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
3c70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3c80: 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
3c90: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
3ca0: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d  mentVariable(nam
3cb0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
3cc0: 20 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21   if (expand && !
3cd0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
3ce0: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
3d00: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
3d10: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
3d20: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
3d30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3d40: 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
3d50: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3d60: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
3d70: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
3d80: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
3d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3da0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
3db0: 4e 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43 6f 6e  Name = GetXmlCon
3dc0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a  figFileName();..
3dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3de0: 69 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20  if (fileName == 
3df0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3e00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3e10: 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20  @default;....   
3e20: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44 6f             XmlDo
3e30: 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20  cument document 
3e40: 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e  = new XmlDocumen
3e50: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
3e60: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c        document.L
3e70: 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  oad(fileName);..
3e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e90: 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  XmlElement eleme
3ea0: 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65  nt = document.Se
3eb0: 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 53  lectSingleNode(S
3ec0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
3ef0: 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  riantCulture,.. 
3f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f10: 20 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   "/configuration
3f20: 2f 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64  /appSettings/add
3f30: 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e  [@key='{0}']", n
3f40: 61 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20  ame)) as..      
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
3f60: 6c 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20  lement;....     
3f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
3f80: 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ment != null).. 
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fb0: 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61    if (element.Ha
3fc0: 73 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  sAttribute("valu
3fd0: 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
3fe0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
3ff0: 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41  e = element.GetA
4000: 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22  ttribute("value"
4010: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4020: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4030: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4040: 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61          if (expa
4050: 6e 64 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73  nd && !String.Is
4060: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75  NullOrEmpty(valu
4070: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
4080: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4090: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45   = Environment.E
40a0: 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74  xpandEnvironment
40b0: 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29  Variables(value)
40c0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
40e0: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
40f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4100: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4110: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
4120: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4130: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
4140: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
4150: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
4160: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
4170: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
4180: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
4190: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
41a0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
41b0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
41c0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
41d0: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
41e0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
41f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
4210: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
4220: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
4250: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4270: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
4280: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
4290: 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73   failed to get s
42a0: 65 74 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20  etting " +..    
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42c0: 20 20 22 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65    "\"{0}\" value
42d0: 3a 20 7b 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29  : {1}", name, e)
42e0: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
4310: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
4320: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4330: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
4340: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
4350: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
4360: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
4370: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
4380: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
4390: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
43a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
43f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
4400: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
4410: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
4420: 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72  string ListToStr
4430: 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67  ing(IList<string
4440: 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b  > list)..      {
4450: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
4460: 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  list == null).. 
4470: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4480: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
4490: 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69         StringBui
44a0: 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65  lder result = ne
44b0: 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28  w StringBuilder(
44c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
44d0: 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
44e0: 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29  element in list)
44f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
4500: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4510: 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c  (element == null
4520: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4530: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
4540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4550: 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74  if (result.Lengt
4560: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
4570: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
4580: 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d  .Append(' ');...
4590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
45a0: 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65  esult.Append(ele
45b0: 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
45c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
45d0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54   return result.T
45e0: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
45f0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
4600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4640: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4650: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
4660: 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69  nt CheckForArchi
4670: 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66  tecturesAndPlatf
4680: 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20  orms(..         
4690: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
46a0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
46b0: 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d  f List<string> m
46c0: 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20  atches..        
46d0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
46e0: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
46f0: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
4700: 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73       if (matches
4710: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
4720: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
4730: 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
4740: 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng>();....      
4750: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
4760: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
4770: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4780: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
4790: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
47a0: 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20  directory) &&.. 
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47c0: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
47d0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
47e0: 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   != null))..    
47f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
4810: 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65  oreach (KeyValue
4820: 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72  Pair<string, str
4830: 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20  ing> pair..     
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4850: 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73         in proces
4860: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
4870: 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20  latforms)..     
4880: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48a0: 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
48b0: 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65  ory.Exists(Maybe
48c0: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
48d0: 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29  ctory, pair.Key)
48e0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
48f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41         matches.A
4920: 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20  dd(pair.Key);.. 
4930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4940: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
4950: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
4960: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
4970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4980: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
4990: 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d  e = pair.Value;.
49a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
49b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
49c0: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
49d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49e0: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
49f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4a00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69            if (Di
4a10: 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d  rectory.Exists(M
4a20: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
4a30: 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75 65  directory, value
4a40: 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
4a50: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a70: 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
4a80: 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  Add(value);..   
4a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4aa0: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b         result++;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4ac0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4af0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
4b00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4b10: 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
4b20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
4b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72  ////....      pr
4b80: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
4b90: 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43  l CheckAssemblyC
4ba0: 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20 20  odeBase(..      
4bb0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
4bc0: 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20  embly,..        
4bd0: 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69 6c    ref string fil
4be0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
4bf0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
4c00: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
4c10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4c20: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
4c30: 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c50: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
4c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
4c70: 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20 3d  tring codeBase =
4c80: 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61   assembly.CodeBa
4c90: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
4ca0: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
4cb0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
4cc0: 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20 20  deBase))..      
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4ce0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
4cf0: 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20 75             Uri u
4d00: 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f 64  ri = new Uri(cod
4d10: 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  eBase);..       
4d20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f         string lo
4d30: 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72  calFileName = ur
4d40: 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a  i.LocalPath;....
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4d60: 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 6c   (!File.Exists(l
4d70: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  ocalFileName))..
4d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d90: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
4da0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4db0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
4dc0: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
4dd0: 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20  ctoryName(..    
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
4df0: 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a  calFileName); /*
4e00: 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
4e10: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
4e20: 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g xmlConfigFileN
4e30: 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69  ame = MaybeCombi
4e40: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
4e50: 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
4e60: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
4e70: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
4e80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46             if (F
4e90: 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f  ile.Exists(xmlCo
4ea0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  nfigFileName))..
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4ec0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
4ed0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
4ee0: 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
4ef0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4f20: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4f30: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
4f40: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
4f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f60: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
4f70: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
4f80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4f90: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
4fa0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
4fb0: 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20  oader found XML 
4fc0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
4fd0: 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
4fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ff0: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
5000: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
5010: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
5020: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69          xmlConfi
5050: 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20  gFileName)); /* 
5060: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
5070: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
50a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
50d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
50e0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
50f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5100: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c      fileName = l
5110: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  ocalFileName;.. 
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5130: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5160: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
5170: 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ches = null;....
5180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5190: 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74   (CheckForArchit
51a0: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
51b0: 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72  rms(directory, r
51c0: 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29  ef matches) > 0)
51d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51e0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
51f0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
5200: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
5210: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
5220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5230: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
5250: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
5260: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
5270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5280: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
5290: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
52a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
52c0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
52d0: 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61  -loader found na
52e0: 74 69 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f  tive sub-directo
52f0: 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20  ries " +..      
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
5320: 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
5330: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
5340: 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
5350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5360: 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f            ListTo
5370: 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29  String(matches))
5380: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
5390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
53b0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
53c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
53e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
53f0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
5400: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
5410: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
5420: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
5430: 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  me = localFileNa
5440: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
5450: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
5460: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
5470: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
5480: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
5490: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
54a0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
54b0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
54c0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
54d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
54e0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
54f0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
5500: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
5510: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
5520: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
5530: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
5540: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
5550: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
5560: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5570: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
5580: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
5590: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
55a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
55b0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
55c0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
55d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55e0: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
55f0: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69  y pre-loader fai
5600: 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64  led to check cod
5610: 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20  e base " +..    
5620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5630: 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
5640: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
5650: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
5660: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
5670: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5680: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
5690: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
56a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
56b0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
56c0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
56d0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
56e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
56f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
5700: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
5710: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
5720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
5770: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5780: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
5790: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
57a0: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
57b0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
57c0: 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20  rently being..  
57d0: 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64      /// executed
57e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
57f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5800: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
5810: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65      /// The dire
5820: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
5830: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
5840: 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20   being executed 
5850: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20  -OR- null if..  
5860: 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f      /// it canno
5870: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
5880: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
5890: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
58a0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
58b0: 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44  ing GetAssemblyD
58c0: 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
58d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
58e0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
58f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41  .              A
5900: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
5910: 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
5920: 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
5930: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
5940: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
5950: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5970: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
5980: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5990: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
59a0: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
59b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
59c0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
59d0: 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
59e0: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
59f0: 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
5a00: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
5a10: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
5a20: 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
5a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a40: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
5a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a60: 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
5a70: 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
5a80: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
5a90: 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65          if (!Che
5aa0: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
5ab0: 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66  se(assembly, ref
5ac0: 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20   fileName))..   
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
5ae0: 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
5af0: 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65  ly.Location;..#e
5b00: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
5b10: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
5b20: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
5b30: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5b50: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
5b60: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
5b70: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
5b80: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
5b90: 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ame(fileName);..
5ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bb0: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
5bc0: 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
5bd0: 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry))..          
5be0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
5bf0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
5c00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
5c10: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
5c20: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
5c30: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
5c40: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
5c50: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
5c60: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
5c70: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
5c80: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
5c90: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
5ca0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
5cb0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
5cc0: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
5cd0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
5ce0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
5d00: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
5d10: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
5d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d30: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
5d40: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
5d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d60: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
5d70: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
5d80: 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64   failed to get d
5d90: 69 72 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20  irectory " +..  
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5db0: 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74      "for current
5dc0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
5dd0: 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
5de0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5e10: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
5e20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5e30: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
5e40: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
5e50: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
5e60: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
5e70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5e80: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
5e90: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
5ea0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
5eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ef0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
5f00: 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e  egion Optional N
5f10: 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62  ative SQLite Lib
5f20: 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67  rary Pre-Loading
5f30: 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d   Code..      //.
5f40: 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
5f50: 49 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e  If we are lookin
5f60: 67 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61  g for the standa
5f70: 72 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22  rd SQLite DLL ("
5f80: 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a  sqlite3.dll"),..
5f90: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
5fa0: 68 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28  he interop DLL (
5fb0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
5fc0: 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65  dll"), or we are
5fd0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d   running on the.
5fe0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
5ff0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
6000: 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c  mework, we shoul
6010: 64 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63  d include this c
6020: 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65  ode (only if the
6030: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
6040: 20 66 65 61 74 75 72 65 20 68 61 73 20 61 63 74   feature has act
6050: 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c  ually been enabl
6060: 65 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20  ed).  This code 
6070: 77 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79  would be totally
6080: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
6090: 20 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68   redundant if th
60a0: 69 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65  is module has be
60b0: 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20  en bundled into 
60c0: 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a  the mixed-mode..
60d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
60e0: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
60f0: 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  //..#if SQLITE_S
6100: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
6110: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
6120: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6130: 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20  AMEWORK....     
6140: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
6150: 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65  TE: Only compile
6160: 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c   in the native l
6170: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20  ibrary pre-load 
6180: 63 6f 64 65 20 69 66 20 74 68 65 20 66 65 61 74  code if the feat
6190: 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ure..      //   
61a0: 20 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61      has been ena
61b0: 62 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62 75  bled for this bu
61c0: 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ild...      //..
61d0: 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49  #if PRELOAD_NATI
61e0: 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20  VE_LIBRARY..    
61f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6200: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
6210: 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72  ame of the envir
6220: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
6230: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70  containing the p
6240: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
6250: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
6260: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
6270: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
6280: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6290: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
62a0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
62b0: 72 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41  ring PROCESSOR_A
62c0: 52 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20  RCHITECTURE =.. 
62d0: 20 20 20 20 20 20 20 20 20 22 50 52 4f 43 45 53           "PROCES
62e0: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
62f0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
6300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6340: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6350: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6360: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
6370: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
6380: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
6390: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
63a0: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
63b0: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
63c0: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
63d0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
63e0: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
63f0: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
6400: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
6410: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6420: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6430: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
6440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
6450: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
6460: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
6470: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
6480: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
6490: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
64a0: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
64b0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
64c0: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
64d0: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
64e0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
64f0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
6500: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6510: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6520: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
6530: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
6540: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
6550: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
6560: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
6570: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
6580: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6590: 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20  vention.Winapi, 
65a0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
65b0: 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c  t.Auto,..#if !PL
65c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
65d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
65e0: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
65f0: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
6600: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
6610: 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66   = true,..#endif
6620: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c  ..          SetL
6630: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
6640: 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ]..      private
6650: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6660: 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72  ntPtr LoadLibrar
6670: 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  y(string fileNam
6680: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
6690: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
66a0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
66b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66f0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6700: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6710: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
6720: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
6730: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
6740: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c  e native Unix dl
6750: 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  open..      /// 
6760: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
6770: 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e  he POSIX documen
6780: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
6790: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
67a0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
67b0: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
67c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
67d0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
67e0: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
67f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
6800: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
6810: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
6820: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6830: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
6840: 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a  m name="mode">..
6850: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
6860: 75 73 74 20 62 65 20 61 20 63 6f 6d 62 69 6e 61  ust be a combina
6870: 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 69  tion of the indi
6880: 76 69 64 75 61 6c 20 62 69 74 20 66 6c 61 67 73  vidual bit flags
6890: 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20   RTLD_LAZY,..   
68a0: 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c     /// RTLD_NOW,
68b0: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e   RTLD_GLOBAL, an
68c0: 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e  d/or RTLD_LOCAL.
68d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
68e0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
68f0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
6900: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
6910: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70  module handle up
6920: 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20  on success -OR- 
6930: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66  IntPtr.Zero on f
6940: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
6950: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
6960: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
6970: 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e  "__Internal", En
6980: 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70  tryPoint = "dlop
6990: 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  en",..          
69a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
69b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
69c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
69d0: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41  rSet = CharSet.A
69e0: 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nsi,..          
69f0: 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d  BestFitMapping =
6a00: 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55   false, ThrowOnU
6a10: 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20  nmappableChar = 
6a20: 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  true,..         
6a30: 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20   SetLastError = 
6a40: 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 70 72  true)]..      pr
6a50: 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78 74  ivate static ext
6a60: 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65  ern IntPtr dlope
6a70: 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  n(string fileNam
6a80: 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d  e, int mode);...
6a90: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6af0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6b00: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
6b10: 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e  open(), bind fun
6b20: 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69  ction calls lazi
6b30: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
6b40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6b50: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
6b60: 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30  nt RTLD_LAZY = 0
6b70: 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x1;....      ///
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 2f  ////////////////
6ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bc0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6bd0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6be0: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
6bf0: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69  ith dlopen(), bi
6c00: 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c  nd function call
6c10: 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a  s immediately...
6c20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6c30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
6c40: 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  ate const int RT
6c50: 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d  LD_NOW = 0x2;...
6c60: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6cc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6cd0: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
6ce0: 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d  open(), make sym
6cf0: 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76  bols globally av
6d00: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
6d10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6d20: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
6d30: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c 4f  nst int RTLD_GLO
6d40: 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d 0a  BAL = 0x100;....
6d50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6db0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6dc0: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
6dd0: 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65 20  pen(), opposite 
6de0: 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20  of RTLD_GLOBAL, 
6df0: 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74 2e  and the default.
6e00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
6e10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
6e20: 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20  ivate const int 
6e30: 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30 78 30  RTLD_LOCAL = 0x0
6e40: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00;....      ///
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6ea0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6eb0: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
6ec0: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 74 68  ith dlopen(), th
6ed0: 65 20 64 65 66 61 75 6c 74 73 20 75 73 65 64 20  e defaults used 
6ee0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
6ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
6f10: 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  ate const int RT
6f20: 4c 44 5f 44 45 46 41 55 4c 54 20 3d 20 52 54 4c  LD_DEFAULT = RTL
6f30: 44 5f 4e 4f 57 20 7c 20 52 54 4c 44 5f 47 4c 4f  D_NOW | RTLD_GLO
6f40: 42 41 4c 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  BAL;..#endif....
6f50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6fa0: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
6fb0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6fc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6fd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6fe0: 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49   This is the P/I
6ff0: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61  nvoke method tha
7000: 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69  t wraps the nati
7010: 76 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74  ve Win32 GetSyst
7020: 65 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f  emInfo..      //
7030: 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65  / function.  See
7040: 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65   the MSDN docume
7050: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c  ntation for full
7060: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
7070: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64   it..      /// d
7080: 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oes...      /// 
7090: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
70a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
70b0: 65 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d  e="systemInfo">.
70c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
70d0: 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
70e0: 6e 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62  n structure to b
70f0: 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74  e filled in by t
7100: 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  he function...  
7110: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
7120: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
7130: 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61  rt("coredll", Ca
7140: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7150: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7160: 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20  ion.Winapi)]..  
7170: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
7180: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
7190: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
71a0: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
71b0: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
71c0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
7210: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7220: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
7230: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
7240: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
7250: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
7260: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
7270: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
7280: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
7290: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
72a0: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
72b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
72c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
72d0: 76 61 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73  vate enum Proces
72e0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
72f0: 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50  : ushort /* COMP
7300: 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20  AT: Win32. */.. 
7310: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7320: 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20    Intel = 0,..  
7330: 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31          MIPS = 1
7340: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70  ,..          Alp
7350: 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20  ha = 2,..       
7360: 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d     PowerPC = 3,.
7370: 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d  .          SHx =
7380: 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   4,..          A
7390: 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20  RM = 5,..       
73a0: 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20     IA64 = 6,..  
73b0: 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20          Alpha64 
73c0: 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 7,..          
73d0: 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20  MSIL = 8,..     
73e0: 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d       AMD64 = 9,.
73f0: 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f  .          IA32_
7400: 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a  on_Win64 = 10,..
7410: 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77            Unknow
7420: 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20  n = 0xFFFF..    
7430: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
7490: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
74a0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
74b0: 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69  cture contains i
74c0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
74d0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d   the current com
74e0: 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20  puter. This..   
74f0: 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20     /// includes 
7500: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79  the processor ty
7510: 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d  pe, page size, m
7520: 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c  emory addresses,
7530: 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   etc...      ///
7540: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7550: 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
7560: 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
7570: 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20  ential)]..      
7580: 70 72 69 76 61 74 65 20 73 74 72 75 63 74 20 53  private struct S
7590: 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20  YSTEM_INFO..    
75a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70    {..          p
75b0: 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41  ublic ProcessorA
75c0: 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f  rchitecture wPro
75d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
75e0: 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70  re;..          p
75f0: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65  ublic ushort wRe
7600: 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55  served; /* NOT U
7610: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
7620: 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77    public uint dw
7630: 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54  PageSize; /* NOT
7640: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
7650: 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
7660: 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69  r lpMinimumAppli
7670: 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f  cationAddress; /
7680: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
7690: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
76a0: 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d  IntPtr lpMaximum
76b0: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
76c0: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
76d0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
76e0: 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69  blic uint dwActi
76f0: 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b  veProcessorMask;
7700: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7710: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
7720: 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f  c uint dwNumberO
7730: 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20  fProcessors; /* 
7740: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7750: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
7760: 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79  nt dwProcessorTy
7770: 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  pe; /* NOT USED 
7780: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
7790: 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f  blic uint dwAllo
77a0: 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74  cationGranularit
77b0: 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  y; /* NOT USED *
77c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
77d0: 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63  lic ushort wProc
77e0: 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e  essorLevel; /* N
77f0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
7800: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68        public ush
7810: 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65  ort wProcessorRe
7820: 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55  vision; /* NOT U
7830: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  SED */..      }.
7840: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
7850: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
78a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
78b0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
78c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
78d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
78e0: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
78f0: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
7900: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
7910: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
7920: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7930: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
7940: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
7950: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
7960: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
7970: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
7980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
79d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
79e0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
79f0: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
7a00: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
7a10: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
7a20: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
7a30: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
7a40: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
7a50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7a60: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
7a70: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
7a80: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
7a90: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
7aa0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7ab0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
7b10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7b20: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
7b30: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
7b40: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
7b50: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
7b60: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
7b70: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
7b80: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
7b90: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
7ba0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
7bb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7bc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7bd0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
7be0: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
7bf0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
7c00: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
7c10: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
7c20: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
7c30: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
7c40: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
7c50: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
7c60: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
7c70: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
7c80: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
7c90: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
7ca0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
7cb0: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
7cc0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
7cd0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
7ce0: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
7cf0: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
7d00: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
7d10: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
7d20: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
7d30: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
7d40: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
7d50: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
7d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7d70: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
7d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
7d90: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
7da0: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
7db0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7e10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7e20: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
7e30: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
7e40: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
7e50: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
7e60: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
7e70: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
7e80: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
7e90: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
7ea0: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
7eb0: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
7ec0: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
7ed0: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
7ee0: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
7ef0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7f00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7f10: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
7f20: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
7f30: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
7f40: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
7f50: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
7f60: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
7f70: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
7f80: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
7f90: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
7fa0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
7fb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
7fc0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
7fd0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
7fe0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
7ff0: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
8000: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
8010: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
8020: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
8030: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
8040: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
8050: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
8060: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
8070: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
8080: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
8090: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
80a0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
80b0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
80c0: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
80d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
80e0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
80f0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
8100: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
8110: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
8120: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
8130: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
8140: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
8150: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
8160: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
8170: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
8180: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
8190: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
81a0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
81b0: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
81c0: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
81d0: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
81e0: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
81f0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8200: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
8210: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
8220: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
8230: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
8240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8250: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
8260: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
8270: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
8280: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
8290: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
82a0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
82b0: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
82c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
82d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
82e0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
82f0: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
8300: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
8310: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
8320: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
8330: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8340: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
8350: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
8360: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
8370: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
8380: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8390: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
83a0: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
83b0: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
83c0: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
83d0: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
83e0: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
83f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8400: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
8410: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8420: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
8430: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
8440: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
8450: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
8460: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
8470: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
8480: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
8490: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
84a0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
84b0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
84c0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
84d0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
84e0: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
84f0: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
8500: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
8510: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
8520: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
8530: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8540: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
8550: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
8560: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
8570: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
8580: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
8590: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
85a0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
85b0: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
85c0: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
85d0: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
85e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
85f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
8600: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
8610: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
8620: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
8630: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
8640: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
8650: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
8660: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
8670: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
8680: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
8690: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
86a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
86b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
86c0: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
86d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
86e0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
86f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
8700: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
8710: 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
8720: 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
8730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8750: 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
8760: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
8770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8780: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
8790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
87a0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
87b0: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
87c0: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
87d0: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
87f0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
8800: 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
8810: 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
8820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8830: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
8840: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8850: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8860: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8870: 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
8880: 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
8890: 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
88a0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
88b0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
88c0: 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
88d0: 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
88e0: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
88f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8900: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
8910: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
8920: 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
8930: 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
8940: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8950: 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
8960: 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
8970: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8990: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
89a0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
89d0: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
89e0: 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
89f0: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
8a10: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8a20: 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
8a30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8a40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8a50: 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a  true; /* FOUND *
8a60: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
8a70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8a80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8a90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8aa0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
8ab0: 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d  /* NOT FOUND */.
8ac0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
8ad0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
8b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
8b40: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
8b50: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
8b60: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
8b70: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
8b80: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
8b90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8ba0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
8bb0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
8bc0: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
8bd0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
8be0: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
8bf0: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
8c00: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
8c10: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
8c20: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
8c30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
8c40: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
8c50: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
8c60: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
8c70: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
8c80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
8c90: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
8ca0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
8cb0: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
8cc0: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
8cd0: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
8ce0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
8cf0: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
8d00: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
8d10: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
8d20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
8d30: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
8d40: 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74  ectory = GetSett
8d50: 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61  ingValue("PreLoa
8d60: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
8d70: 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20  ctory",..       
8d80: 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d         null);...
8d90: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64  .          if (d
8da0: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
8db0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8dc0: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
8dd0: 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  y;....#if !PLATF
8de0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8df0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8e00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
8e10: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
8e20: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
8e30: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
8e40: 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  y" environment..
8e50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8e60: 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
8e70: 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29  et (to anything)
8e80: 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74  , then attempt t
8e90: 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  o use the..     
8ea0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69       //       di
8eb0: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
8ec0: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  ng the currently
8ed0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
8ee0: 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  bly..          /
8ef0: 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79  /       (i.e. Sy
8f00: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
8f10: 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65  ) intsead of the
8f20: 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
8f30: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8f40: 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72   domain base dir
8f50: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20  ectory...       
8f60: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8f70: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
8f80: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
8f90: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
8fa0: 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d  dSQLite_UseAssem
8fb0: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  blyDirectory", n
8fc0: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
8fd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8fe0: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
8ff0: 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c  ory = GetAssembl
9000: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  yDirectory();...
9010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
9020: 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20  f (directory != 
9030: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9040: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9050: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
9060: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9070: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9080: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
9090: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
90a0: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73  on using the bas
90b0: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
90c0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
90d0: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61         current a
90e0: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
90f0: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
9100: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
9110: 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72  rn AppDomain.Cur
9120: 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
9130: 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65  irectory;..#else
9140: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9150: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9160: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
9170: 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
9180: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
9190: 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
91a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
91b0: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
91c0: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  ting assembly...
91d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
91e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
91f0: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
9200: 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory();..#endif..
9210: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9220: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
9270: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9280: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
9290: 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e  mines if the dyn
92a0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
92b0: 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75  y file name requ
92c0: 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20  ires a suffix.. 
92d0: 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64       /// and add
92e0: 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72  s it if necessar
92f0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
9300: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9310: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9320: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
9330: 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
9340: 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  nal dynamic link
9350: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
9360: 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  me to inspect...
9370: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
9380: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
9390: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
93a0: 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c  // The dynamic l
93b0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
93c0: 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20   name, possibly 
93d0: 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c  modified to incl
93e0: 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f  ude an..      //
93f0: 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20  / extension...  
9400: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
9410: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
9420: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
9430: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
9440: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
9450: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20  ing fileName /* 
9460: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
9470: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
9480: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
9490: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
94a0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
94b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
94c0: 20 20 20 20 20 20 20 20 69 66 20 28 49 73 57 69          if (IsWi
94d0: 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20  ndows())..      
94e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
94f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9500: 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57  (!fileName.EndsW
9510: 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e  ith(DllFileExten
9520: 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
9530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9540: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
9550: 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
9560: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
9570: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9590: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
95a0: 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  e + DllFileExten
95b0: 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
95c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
95d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
95e0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
95f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
9600: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  eName;..      }.
9610: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9680: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
9690: 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65  eturns the proce
96a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
96b0: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
96c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
96d0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
96e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
96f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
9700: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
9710: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
9720: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
9730: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52  rent process -OR
9740: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
9750: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
9760: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
9770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9780: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
9790: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
97a0: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
97b0: 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20  hitecture()..   
97c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
97d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
97e0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
97f0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
9800: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9810: 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  re" environment.
9820: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9830: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
9840: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
9850: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72  atim for the cur
9860: 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a  rent processor..
9870: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9880: 20 20 20 61 72 63 68 69 74 65 63 74 75 72 65 2e     architecture.
9890: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
98a0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
98b0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
98c0: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
98d0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
98e0: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
98f0: 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f  dSQLite_Processo
9900: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 2c 20  rArchitecture", 
9910: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
9920: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
9930: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d  rArchitecture !=
9940: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
9950: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f        return pro
9960: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9970: 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  re;....         
9980: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
9990: 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74  / BUGBUG: Will t
99a0: 68 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65  his always be re
99b0: 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20  liable?..       
99c0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
99d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
99e0: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
99f0: 69 6e 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53  ingValue(PROCESS
9a00: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c  OR_ARCHITECTURE,
9a10: 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
9a20: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
9a70: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9a80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9a90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9aa0: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43        // HACK: C
9ab0: 68 65 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70  heck for an "imp
9ac0: 6f 73 73 69 62 6c 65 22 20 73 69 74 75 61 74 69  ossible" situati
9ad0: 6f 6e 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e  on.  If the poin
9ae0: 74 65 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20  ter size..      
9af0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
9b00: 33 32 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f  32-bits, the pro
9b10: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
9b20: 75 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41  ure cannot be "A
9b30: 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20  MD64"...        
9b40: 20 20 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68    //       In th
9b50: 61 74 20 63 61 73 65 2c 20 77 65 20 61 72 65 20  at case, we are 
9b60: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
9b70: 20 68 69 74 74 69 6e 67 20 61 20 62 75 67 20 69   hitting a bug i
9b80: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
9b90: 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74   //       operat
9ba0: 69 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f  ing system and/o
9bb0: 72 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  r Visual Studio 
9bc0: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 0d  that causes the.
9bd0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9be0: 20 20 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52      PROCESSOR_AR
9bf0: 43 48 49 54 45 43 54 55 52 45 20 65 6e 76 69 72  CHITECTURE envir
9c00: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
9c10: 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
9c20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9c30: 20 20 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69     wrong value i
9c40: 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61  n some circumsta
9c50: 6e 63 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65  nces.  Please re
9c60: 66 65 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20  fer to ticket.. 
9c70: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9c80: 20 20 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66    [9ac9862611] f
9c90: 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72  or further infor
9ca0: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
9cb0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9cc0: 20 69 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a   if ((IntPtr.Siz
9cd0: 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29  e == sizeof(int)
9ce0: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
9cf0: 20 20 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c      String.Equal
9d00: 73 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  s(processorArchi
9d10: 74 65 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22  tecture, "AMD64"
9d20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
9d30: 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
9d40: 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
9d50: 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20  oreCase))..     
9d60: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
9d70: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
9d80: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
9d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9db0: 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72  // NOTE: When tr
9dc0: 61 63 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64  acing is enabled
9dd0: 2c 20 73 61 76 65 20 74 68 65 20 6f 72 69 67 69  , save the origi
9de0: 6e 61 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a  nally detected..
9df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9e00: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
9e10: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 62 65   architecture be
9e20: 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74  fore changing it
9e30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9e40: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9e50: 20 20 20 73 74 72 69 6e 67 20 73 61 76 65 64 50     string savedP
9e60: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9e70: 74 75 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72  ture = processor
9e80: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23  Architecture;..#
9e90: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
9ea0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9eb0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9ec0: 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f  : We know that o
9ed0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73  perating systems
9ee0: 20 74 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d   that return "AM
9ef0: 44 36 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20  D64" as..       
9f00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9f10: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
9f20: 63 68 69 74 65 63 74 75 72 65 20 61 72 65 20 61  chitecture are a
9f30: 63 74 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73  ctually a supers
9f40: 65 74 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  et of..         
9f50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
9f60: 65 20 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f  e "x86" processo
9f70: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 3b 20  r architecture; 
9f80: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
9f90: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
9fa0: 20 2f 2f 20 20 20 20 20 20 20 22 78 38 36 22 20   //       "x86" 
9fb0: 77 68 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72  when the pointer
9fc0: 20 73 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73   size is 32-bits
9fd0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9fe0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9ff0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
a000: 69 74 65 63 74 75 72 65 20 3d 20 22 78 38 36 22  itecture = "x86"
a010: 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
a020: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
a030: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
a040: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
a050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
a060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a070: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a080: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
a090: 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65 20 68  : Show that we h
a0a0: 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73  it a fairly unus
a0b0: 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69  ual situation (i
a0c0: 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .e...           
a0d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a0e0: 74 68 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63  the "wrong" proc
a0f0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
a100: 72 65 20 77 61 73 20 64 65 74 65 63 74 65 64 29  re was detected)
a110: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a120: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a130: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
a140: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
a150: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a170: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
a180: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
a190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1a0: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
a1b0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 64 65  ry pre-loader de
a1c0: 74 65 63 74 65 64 20 7b 30 7d 2d 62 69 74 20 70  tected {0}-bit p
a1d0: 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20 20  ointer " +..    
a1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1f0: 20 20 22 73 69 7a 65 20 77 69 74 68 20 70 72 6f    "size with pro
a200: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
a210: 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73 69  ure \"{1}\", usi
a220: 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ng " +..        
a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70                "p
a240: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
a250: 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69 6e  cture \"{2}\" in
a260: 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20  stead...",..    
a270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a280: 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20    IntPtr.Size * 
a290: 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61  8 /* bits */, sa
a2a0: 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68  vedProcessorArch
a2b0: 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20  itecture,..     
a2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
a2e0: 65 63 74 75 72 65 29 29 3b 20 2f 2a 20 74 68 72  ecture)); /* thr
a2f0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
a300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a310: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
a320: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a340: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
a360: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
a370: 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20     }..#else..   
a380: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
a390: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a3a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a3b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a3c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a3d0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
a3e0: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
a3f0: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
a400: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
a410: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
a420: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a430: 20 20 57 69 6e 33 32 20 41 50 49 20 66 75 6e 63    Win32 API func
a440: 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f  tion (via P/Invo
a450: 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f  ke) that can pro
a460: 76 69 64 65 20 75 73 0d 0a 20 20 20 20 20 20 20  vide us..       
a470: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a480: 77 69 74 68 20 74 68 65 20 70 72 6f 63 65 73 73  with the process
a490: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e  or architecture.
a4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a4b0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a4c0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
a4d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a4e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a500: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74  // NOTE: The out
a510: 70 75 74 20 6f 66 20 74 68 65 20 47 65 74 53 79  put of the GetSy
a520: 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f  stemInfo functio
a530: 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  n will be..     
a540: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a550: 20 20 20 20 20 20 70 6c 61 63 65 64 20 68 65 72        placed her
a560: 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f  e.  Only the pro
a570: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
a580: 75 72 65 20 66 69 65 6c 64 0d 0a 20 20 20 20 20  ure field..     
a590: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a5a0: 20 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79        is used by
a5b0: 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20   this method... 
a5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a5e0: 20 20 20 20 20 20 20 53 59 53 54 45 4d 5f 49 4e         SYSTEM_IN
a5f0: 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a  FO systemInfo;..
a600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a610: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a620: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
a630: 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79 73  E: Query the sys
a640: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
a650: 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68  via P/Invoke, th
a660: 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  us..            
a670: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66        //       f
a680: 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63  illing the struc
a690: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
a6a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
a6c0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
a6d0: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
a6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a6f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a700: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
a710: 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f  : Return the pro
a720: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
a730: 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20 73  ure value as a s
a740: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
a750: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a770: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
a780: 63 74 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20  cture =..       
a790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
a7a0: 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65  ystemInfo.wProce
a7b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a7c0: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
a7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
a7f0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
a800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a810: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
a820: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
a830: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a840: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a850: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
a860: 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  E: Upon failure,
a870: 20 72 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79   return an empty
a880: 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77   string.  This w
a890: 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20  ill prevent..   
a8a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
a8b0: 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20      the calling 
a8c0: 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73  method from cons
a8d0: 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74  idering this met
a8e0: 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20  hod call a..    
a8f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a900: 20 20 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20     "failure"... 
a910: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
a920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
a930: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
a940: 74 75 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d  ture = String.Em
a950: 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  pty;..          
a960: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
a970: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a9c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a9d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
a9e0: 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d  ecture;..      }
a9f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
aa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa40: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
aa50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
aa60: 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72  /// Given the pr
aa70: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
aa80: 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68  ture, returns th
aa90: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c  e name of the pl
aaa0: 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f  atform...      /
aab0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
aac0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
aad0: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
aae0: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
aaf0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
ab00: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
ab10: 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c  ure to be transl
ab20: 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f  ated to a platfo
ab30: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
ab40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
ab50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
ab60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
ab70: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66   platform name f
ab80: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
ab90: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
aba0: 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c  tecture -OR- nul
abb0: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  l..      /// if 
abc0: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
abd0: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
abe0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
abf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
ac00: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
ac10: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20  latformName(..  
ac20: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
ac30: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
ac40: 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ture /* in */.. 
ac50: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
ac60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
ac70: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
ac80: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
ac90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
aca0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
acb0: 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
acc0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
acd0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
ace0: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
acf0: 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65  ullOrEmpty(proce
ad00: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
ad10: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ad20: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ad30: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
ad40: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
ad50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ad70: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
ad80: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
ad90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
adb0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
adc0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
add0: 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  g platformName;.
ade0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
adf0: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
ae00: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
ae10: 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  rms.TryGetValue(
ae20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae30: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
ae40: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f  rArchitecture, o
ae50: 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  ut platformName)
ae60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ae70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ae80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61        return pla
ae90: 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20  tformName;..    
aea0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
aeb0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
aec0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
aed0: 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  l;..      }.... 
aee0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
aef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
af30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
af40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
af50: 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20  ttempts to load 
af60: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
af70: 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20  e library based 
af80: 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64  on the specified
af90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65  ..      /// dire
afa0: 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73  ctory and proces
afb0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
afc0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
afd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
afe0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
aff0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d  baseDirectory">.
b000: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
b010: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f  ase directory to
b020: 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64   use, null for d
b030: 65 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65  efault (the base
b040: 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20   directory of.. 
b050: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72       /// the cur
b060: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
b070: 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20   domain).  This 
b080: 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64  directory should
b090: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
b0a0: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f      /// processo
b0b0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73  r architecture s
b0c0: 70 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65  pecific sub-dire
b0d0: 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  ctories...      
b0e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
b0f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
b100: 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
b110: 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
b120: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75      /// The requ
b130: 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ested processor 
b140: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75  architecture, nu
b150: 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
b160: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
b170: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
b180: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
b190: 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20  rent process).  
b1a0: 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75  This caller shou
b1b0: 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ld..      /// al
b1c0: 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63  most always spec
b1d0: 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69  ify null for thi
b1e0: 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20  s parameter...  
b1f0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b200: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
b210: 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
b220: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d  oduleFileName">.
b230: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
b240: 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65 20  andidate native 
b250: 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65  module file name
b260: 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65   to load will be
b270: 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20   stored here,.. 
b280: 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65       /// if nece
b290: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ssary...      //
b2a0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b2b0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
b2c0: 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  e="nativeModuleH
b2d0: 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  andle">..      /
b2e0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
b2f0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72  dule handle as r
b300: 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c  eturned by LoadL
b310: 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73  ibrary will be s
b320: 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  tored..      ///
b330: 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73   here, if necess
b340: 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ary.  This value
b350: 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e   will be IntPtr.
b360: 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c  Zero if the call
b370: 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c   to..      /// L
b380: 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73  oadLibrary fails
b390: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
b3a0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
b3b0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
b3c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
b3d0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  f the native mod
b3e0: 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73  ule was loaded s
b3f0: 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68  uccessfully; oth
b400: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
b410: 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  // zero...      
b420: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
b430: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
b440: 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61  atic bool PreLoa
b450: 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20  dSQLiteDll(..   
b460: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
b470: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
b480: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
b490: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
b4a0: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
b4b0: 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20  itecture,    /* 
b4c0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
b4d0: 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69   ref string nati
b4e0: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
b4f0: 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  , /* out */..   
b500: 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
b510: 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  r nativeModuleHa
b520: 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a  ndle    /* out *
b530: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
b540: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b550: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b560: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
b570: 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20   specified base 
b580: 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c  directory is nul
b590: 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75  l, use the defau
b5a0: 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  lt..          //
b5b0: 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74         (i.e. att
b5c0: 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69  empt to automati
b5d0: 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29  cally detect it)
b5e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
b5f0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
b600: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  aseDirectory == 
b610: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
b620: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
b630: 72 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65  ry = GetBaseDire
b640: 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
b650: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b660: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
b670: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65  we failed to que
b680: 72 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ry the base dire
b690: 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e  ctory, stop now.
b6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b6b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
b6c0: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
b6d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
b6e0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b6f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
b700: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
b710: 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20  NOTE: Determine 
b720: 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
b730: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
b740: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
b750: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
b760: 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73        If this is
b770: 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68   not known by th
b780: 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e  is class, we can
b790: 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20  not continue... 
b7a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b7b0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
b7c0: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
b7d0: 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
b7e0: 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a  eNameOnly();....
b7f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
b800: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75  leNameOnly == nu
b810: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
b820: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
b830: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
b840: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
b850: 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69  OTE: If the nati
b860: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
b870: 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20  y exists in the 
b880: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
b890: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
b8a0: 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20     itself, stop 
b8b0: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
b8c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
b8d0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
b8e0: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
b8f0: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
b900: 68 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  h(baseDirectory,
b910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b920: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
b930: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
b940: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  (File.Exists(fil
b950: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
b960: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
b970: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
b980: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b990: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
b9a0: 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73  specified proces
b9b0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
b9c0: 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
b9d0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
b9e0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a        default...
b9f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ba00: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
ba10: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
ba20: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
ba30: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
ba40: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
ba50: 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72  = GetProcessorAr
ba60: 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d  chitecture();...
ba70: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
ba80: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
ba90: 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
baa0: 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f 63  o query the proc
bab0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
bac0: 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  re, stop now... 
bad0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
bae0: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
baf0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
bb00: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
bb10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bb20: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
bb30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
bb40: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
bb50: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
bb60: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
bb70: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
bb80: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
bb90: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
bba0: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
bbb0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
bbc0: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
bbd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
bbe0: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
bbf0: 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
bc00: 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
bc10: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
bc30: 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63  eDirectory, proc
bc40: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
bc50: 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
bc60: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
bc70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
bc80: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66  / NOTE: If the f
bc90: 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f  ile name based o
bca0: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
bcb0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
bcc0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
bcd0: 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72  is not found, tr
bce0: 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f  y using the asso
bcf0: 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20  ciated platform 
bd00: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
bd10: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
bd20: 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
bd30: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
bd40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bd50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
bd60: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
bd70: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61  : Attempt to tra
bd80: 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65  nslate the proce
bd90: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
bda0: 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20  e to a..        
bdb0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
bdc0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
bde0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
bdf0: 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
be00: 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d  me = GetPlatform
be10: 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72  Name(processorAr
be20: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
be30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
be40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be50: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
be60: 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61  ailed to transla
be70: 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  te the platform 
be80: 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  name, stop now..
be90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bea0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
beb0: 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d   if (platformNam
bec0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
bed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bee0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
bf00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bf10: 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68  / NOTE: Build th
bf20: 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20  e full path and 
bf30: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
bf40: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d  e native SQLite.
bf50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bf60: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
bf70: 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f  using the platfo
bf80: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
bf90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
bfa0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
bfb0: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
bfc0: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
bfd0: 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62  nePath(MaybeComb
bfe0: 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
c000: 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66  Directory, platf
c010: 6f 72 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61  ormName), fileNa
c020: 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
c030: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c050: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
c060: 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
c070: 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f  , skip trying to
c080: 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20   load it...     
c090: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c0a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
c0b0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
c0c0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
c0d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c0e0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
c0f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c100: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
c110: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
c120: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
c130: 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
c140: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
c150: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c170: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
c180: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
c190: 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72  how exactly wher
c1a0: 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20  e we are trying 
c1b0: 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
c1c0: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
c1d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
c1e0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72  QLite library fr
c1f0: 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  om...           
c200: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
c220: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
c230: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
c240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c250: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
c260: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
c270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c280: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
c290: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
c2a0: 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  is trying to loa
c2b0: 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20  d native " +..  
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2d0: 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72      "SQLite libr
c2e0: 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c  ary \"{0}\"...",
c2f0: 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20   fileName)); /* 
c300: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
c310: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c320: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
c330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c350: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
c360: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c370: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
c380: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c3a0: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
c3b0: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
c3c0: 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73  e library.  This
c3d0: 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20   will either..  
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c3f0: 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 76 61       return a va
c400: 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  lid native modul
c410: 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e  e handle, return
c420: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20   IntPtr.Zero,.. 
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c440: 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61        or throw a
c450: 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20 20 54 68  n exception.  Th
c460: 69 73 20 6d 75 73 74 20 75 73 65 20 74 68 65 20  is must use the 
c470: 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20  appropriate..   
c480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
c490: 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74      P/Invoke met
c4a0: 68 6f 64 20 66 6f 72 20 74 68 65 20 63 75 72 72  hod for the curr
c4b0: 65 6e 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  ent operating sy
c4c0: 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20  stem...         
c4d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c4e0: 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
c4f0: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69  uleFileName = fi
c500: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21  leName;....#if !
c510: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c520: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
c530: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73           if (!Is
c540: 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20  Windows())..    
c550: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
c570: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
c580: 65 20 3d 20 64 6c 6f 70 65 6e 28 66 69 6c 65 4e  e = dlopen(fileN
c590: 61 6d 65 2c 20 52 54 4c 44 5f 44 45 46 41 55 4c  ame, RTLD_DEFAUL
c5a0: 54 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  T);..           
c5b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c5c0: 20 20 20 20 65 6c 73 65 0d 0a 23 65 6e 64 69 66      else..#endif
c5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c5e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c5f0: 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
c600: 65 48 61 6e 64 6c 65 20 3d 20 4c 6f 61 64 4c 69  eHandle = LoadLi
c610: 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b  brary(fileName);
c620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c630: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c640: 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76     return (nativ
c650: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d  eModuleHandle !=
c660: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
c670: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
c680: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
c690: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
c6a0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
c6b0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
c6c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
c6d0: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
c6e0: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
c6f0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
c700: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
c710: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
c720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
c730: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
c740: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c750: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c770: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
c780: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
c790: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
c7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
c7c0: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
c7d0: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
c7e0: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
c7f0: 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  r(); /* throw */
c800: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c810: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c820: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
c830: 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20  OTE: Show where 
c840: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61  we failed to loa
c850: 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  d the native SQL
c860: 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ite..           
c870: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
c880: 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f  library from alo
c890: 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33  ng with the Win3
c8a0: 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64  2 error code and
c8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c8c0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63      //       exc
c8d0: 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69  eption informati
c8e0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
c8f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
c910: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
c920: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
c950: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
c960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c970: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
c980: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
c990: 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e  failed to load n
c9a0: 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20  ative " +..     
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79   "SQLite library
c9d0: 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73   \"{0}\" (getLas
c9e0: 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b  tError = {1}): {
c9f0: 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2}",..          
ca00: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
ca10: 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c  Name, lastError,
ca20: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
ca30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ca40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
ca50: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
ca60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
ca80: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
ca90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
caa0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
cab0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
cac0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
cad0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
cae0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
caf0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
cb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
cb50: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
cb60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
cb70: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
cb80: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
cb90: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
cba0: 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65 72  the native inter
cbb0: 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73 74  op assembly must
cbc0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62  ..    //       b
cbd0: 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20 69  e used because i
cbe0: 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72  t provides sever
cbf0: 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74  al workarounds t
cc00: 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a  o .NET Compact..
cc10: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72 61      //       Fra
cc20: 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f  mework limitatio
cc30: 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72  ns important for
cc40: 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69 6f   proper operatio
cc50: 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a 20  n of the core.. 
cc60: 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73 74     //       Syst
cc70: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 66  em.Data.SQLite f
cc80: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e  unctionality (e.
cc90: 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f  g. being able to
cca0: 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20   bind..    //   
ccb0: 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 61      parameters a
ccc0: 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e  nd handle column
ccd0: 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 73   values of types
cce0: 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62 6c   Int64 and Doubl
ccf0: 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  e)...    //..#if
cd00: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
cd10: 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d 0a 20  _LIBRARY_NAME.. 
cd20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
cd30: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
cd40: 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b  DLL = "sqlite3";
cd50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69 6e 74  ..#else..    int
cd60: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
cd70: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
cd80: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
cd90: 31 30 30 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69  100.dll";..#endi
cda0: 66 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f  f..#elif SQLITE_
cdb0: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f  STANDARD..    //
cdc0: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f  ..    // NOTE: O
cdd0: 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65  therwise, if the
cde0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
cdf0: 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61 62   library is enab
ce00: 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20  led, use it...  
ce10: 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
ce20: 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
ce30: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71  SQLITE_DLL = "sq
ce40: 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55  lite3";..#elif U
ce50: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a  SE_INTEROP_DLL..
ce60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
ce70: 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20  OTE: Otherwise, 
ce80: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  if the native SQ
ce90: 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73  Lite interop ass
cea0: 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64  embly is enabled
ceb0: 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  ,..    //       
cec0: 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d  use it...    //.
ced0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
cee0: 44 41 52 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d  DARD_LIBRARY_NAM
cef0: 45 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  E..    internal 
cf00: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
cf10: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
cf20: 65 33 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  e3";..#else..   
cf30: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
cf40: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
cf50: 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65  L = "SQLite.Inte
cf60: 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69  rop.dll";..#endi
cf70: 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  f..#else..    //
cf80: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
cf90: 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
cfa0: 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
cfb0: 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
cfc0: 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
cfd0: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
cfe0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
cff0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
d000: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
d010: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
d020: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
d030: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
d040: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
d050: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
d060: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
d070: 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
d080: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
d090: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
d0a0: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
d0b0: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
d0c0: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
d0d0: 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
d0e0: 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
d0f0: 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
d100: 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
d110: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
d120: 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
d130: 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
d140: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
d150: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
d160: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d170: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d180: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d190: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
d1a0: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
d1b0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
d1c0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
d1d0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
d1e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d1f0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
d200: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d210: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d220: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
d230: 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
d240: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
d250: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
d260: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
d270: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d280: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
d290: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d2a0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d2b0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
d2c0: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
d2d0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
d2e0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
d2f0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
d300: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d310: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
d320: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d330: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d340: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
d350: 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
d360: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
d370: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
d380: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
d390: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d3a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d3b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
d3c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
d3d0: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
d3e0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
d3f0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
d400: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
d410: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d420: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
d430: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d440: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
d450: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
d460: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
d470: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
d480: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
d490: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
d4a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d4b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d4c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d4d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
d4e0: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
d4f0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
d500: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
d510: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
d520: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d530: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
d540: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d550: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d560: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
d570: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
d580: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d590: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
d5a0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
d5b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d5c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d5d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d5e0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
d5f0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
d600: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
d610: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
d620: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
d630: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d640: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
d650: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d660: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d670: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
d680: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
d690: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
d6a0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
d6b0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
d6c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d6d0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
d6e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d6f0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d700: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
d710: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
d720: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
d730: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
d740: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
d750: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d760: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
d770: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d780: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
d790: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
d7a0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
d7b0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
d7c0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
d7d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d7e0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
d7f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d800: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d810: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
d820: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
d830: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
d840: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
d850: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d860: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
d870: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d880: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d890: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
d8a0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
d8b0: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
d8c0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
d8d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d8e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d8f0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d900: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d910: 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
d920: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
d930: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
d940: 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
d950: 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
d960: 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
d970: 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
d980: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
d990: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d9a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d9b0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d9c0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d9d0: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
d9e0: 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
d9f0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
da00: 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
da10: 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
da20: 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
da30: 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
da40: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
da50: 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
da60: 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
da70: 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
da80: 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
da90: 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
daa0: 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
dab0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dac0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
dad0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
dae0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
daf0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
db00: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
db10: 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
db20: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
db30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
db40: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
db50: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
db60: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
db70: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
db80: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
db90: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
dba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dbb0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
dbc0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
dbd0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
dbe0: 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
dbf0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
dc00: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
dc10: 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
dc20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
dc30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dc40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
dc50: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
dc60: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
dc70: 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
dc80: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
dc90: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
dca0: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
dcb0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
dcc0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
dcd0: 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
dce0: 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
dcf0: 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
dd00: 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
dd10: 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
dd20: 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
dd30: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
dd40: 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
dd50: 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
dd60: 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
dd70: 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
dd80: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
dd90: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
dda0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ddb0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ddc0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ddd0: 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
dde0: 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
ddf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
de00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
de10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
de20: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
de30: 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
de40: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
de50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
de60: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
de70: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
de80: 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
de90: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
dea0: 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
deb0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
dec0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ded0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dee0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
def0: 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
df00: 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
df10: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
df20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
df30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
df40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
df50: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
df60: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
df70: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
df80: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
df90: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
dfa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
dfb0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
dfc0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
dfd0: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
dfe0: 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
dff0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
e000: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
e010: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
e020: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
e030: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
e040: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
e050: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
e060: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
e070: 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
e080: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
e090: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e0a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
e0b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
e0c0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
e0d0: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
e0e0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
e0f0: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
e100: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e110: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
e120: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e130: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e140: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
e150: 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
e160: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
e170: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e180: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
e190: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e1a0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e1b0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e1c0: 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79  _open_interop(by
e1d0: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
e1e0: 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  e, byte[] vfsNam
e1f0: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
e200: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e  gsEnum flags, in
e210: 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66 20  t extFuncs, ref 
e220: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
e230: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e240: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
e250: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e260: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e270: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
e280: 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79  pen16_interop(by
e290: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
e2a0: 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  e, byte[] vfsNam
e2b0: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
e2c0: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e  gsEnum flags, in
e2d0: 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66 20  t extFuncs, ref 
e2e0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
e2f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e300: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
e310: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e320: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e330: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
e340: 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  eset_interop(Int
e350: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20  Ptr stmt);....  
e360: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e370: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
e380: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e390: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
e3a0: 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f  3_changes_intero
e3b0: 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23  p(IntPtr db);..#
e3c0: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
e3d0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
e3e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
e3f0: 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64      // The stand
e400: 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75  ard api call equ
e410: 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20  ivalents of the 
e420: 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61  above interop ca
e430: 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  lls..    #region
e440: 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f   standard versio
e450: 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75  ns of interop fu
e460: 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53  nctions....#if S
e470: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
e480: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e490: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e4a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e4b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e4c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e4d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e4e0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e4f0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e500: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e510: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e520: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e530: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e540: 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  de sqlite3_close
e550: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
e560: 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47  #if !INTEROP_LEG
e570: 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21  ACY_CLOSE..#if !
e580: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e590: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e5a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e5b0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e5c0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e5d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e5e0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e5f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e600: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e610: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e620: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
e630: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
e640: 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74  te3_close_v2(Int
e650: 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e  Ptr db); /* 3.7.
e660: 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a  14+ */..#endif..
e670: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e680: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e690: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e6a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e6b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e6c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e6d0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e6e0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e6f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e700: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e710: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e720: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e730: 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
e740: 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  e_function(IntPt
e750: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
e760: 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c  Name, int nArgs,
e770: 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
e780: 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
e790: 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
e7a0: 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
e7b0: 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61  step, SQLiteFina
e7c0: 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c  lCallback ffinal
e7d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e7e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e7f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e800: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e810: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e820: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e830: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e840: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e860: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e870: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e880: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e890: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
e8a0: 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 73  inalize(IntPtr s
e8b0: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
e8c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e8d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e8e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e8f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e900: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e910: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e920: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e930: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e940: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e950: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e960: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
e970: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
e980: 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 28  3_backup_finish(
e990: 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
e9a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e9b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e9c0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e9d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e9e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e9f0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ea00: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ea10: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ea20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ea30: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ea40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ea50: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
ea60: 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65  ode sqlite3_rese
ea70: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
ea80: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ea90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
eaa0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
eab0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
eac0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ead0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
eae0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
eaf0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
eb00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
eb10: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
eb20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
eb30: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
eb40: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
eb50: 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  r_name(IntPtr st
eb60: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
eb70: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
eb80: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
eb90: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
eba0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ebb0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ebc0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ebd0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ebe0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ebf0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ec00: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ec10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ec20: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ec30: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
ec40: 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  se_name(IntPtr s
ec50: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
ec60: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ec70: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ec80: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ec90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
eca0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ecb0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ecc0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ecd0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ece0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ecf0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ed00: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ed10: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
ed20: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
ed30: 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  ase_name16(IntPt
ed40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
ed50: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
ed60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
ed70: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
ed80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ed90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
eda0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
edb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
edc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
edd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ede0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
edf0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ee00: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
ee10: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
ee20: 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73 74  cltype(IntPtr st
ee30: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
ee40: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ee50: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ee60: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ee70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ee80: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ee90: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
eea0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
eeb0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
eec0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
eed0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
eee0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
eef0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ef00: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
ef10: 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  pe16(IntPtr stmt
ef20: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
ef30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ef40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ef50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ef60: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ef70: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ef80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ef90: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
efa0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
efb0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
efc0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
efd0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
efe0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
eff0: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74  _column_name(Int
f000: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
f010: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
f020: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f030: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f040: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f050: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f060: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f070: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f080: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f090: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f0a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f0b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f0c0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f0d0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
f0e0: 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
f0f0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
f100: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f110: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f120: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f130: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f140: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f150: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f160: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f170: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f180: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f190: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f1a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f1b0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f1c0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
f1d0: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
f1e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
f1f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f200: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f210: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f220: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
f230: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
f240: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f250: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
f260: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
f270: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f280: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
f290: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f2a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
f2b0: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
f2c0: 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
f2d0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
f2e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f2f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f300: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f310: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f320: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f330: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f340: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f350: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f360: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f370: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f380: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f390: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f3a0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
f3b0: 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
f3c0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
f3d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f3e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f3f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f400: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f410: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f420: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f430: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
f440: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f450: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
f460: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
f470: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f480: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f490: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
f4a0: 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  me16(IntPtr stmt
f4b0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
f4c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f4d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f4e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f4f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f500: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f510: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f520: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
f530: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f540: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
f550: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
f560: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f570: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f580: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74  _column_text(Int
f590: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
f5a0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
f5b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f5c0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f5d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f5e0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f5f0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f600: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f610: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f620: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f630: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f640: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f650: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f660: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
f670: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
f680: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
f690: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f6a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f6b0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f6c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f6d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f6e0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f6f0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f700: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f710: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f720: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f730: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f740: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f750: 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74 72  e3_errmsg(IntPtr
f760: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
f770: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f780: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f790: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f7a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f7b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f7c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f7d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f7e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f7f0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f800: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f810: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f820: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f830: 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74 72  3_prepare(IntPtr
f840: 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c   db, IntPtr pSql
f850: 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65  , int nBytes, re
f860: 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72  f IntPtr stmt, r
f870: 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d  ef IntPtr ptrRem
f880: 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45  ain);....#if USE
f890: 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69 66  _PREPARE_V2..#if
f8a0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f8b0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f8c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f8d0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f8e0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f8f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f900: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f910: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f920: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f930: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f940: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
f950: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
f960: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
f970: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
f980: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
f990: 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
f9a0: 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
f9b0: 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65   ptrRemain);..#e
f9c0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
f9d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f9e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f9f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fa00: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
fa10: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
fa20: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
fa30: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fa40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fa50: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
fa60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fa70: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
fa80: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
fa90: 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
faa0: 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64 62  tadata(IntPtr db
fab0: 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
fac0: 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
fad0: 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
fae0: 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 44   ref IntPtr ptrD
faf0: 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74  ataType, ref Int
fb00: 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20  Ptr ptrCollSeq, 
fb10: 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c  ref int notNull,
fb20: 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79   ref int primary
fb30: 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74  Key, ref int aut
fb40: 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  oInc);....#if !P
fb50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
fb60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
fb70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fb80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
fb90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
fba0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
fbb0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
fbc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fbd0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
fbe0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fbf0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
fc00: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
fc10: 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0d  text(IntPtr p);.
fc20: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
fc30: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
fc40: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
fc50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
fc60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
fc70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
fc80: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
fc90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
fca0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
fcb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
fcc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
fcd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
fce0: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28  e3_value_text16(
fcf0: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65  IntPtr p);....#e
fd00: 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c  ndif..    // SQL
fd10: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
fd20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
fd30: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
fd40: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75 73  unctions are cus
fd50: 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f 20  tom and have no 
fd60: 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64  equivalent stand
fd70: 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74 68  ard library meth
fd80: 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20  od...    // All 
fd90: 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69 63  of them are "nic
fda0: 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64 20  e to haves" and 
fdb0: 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20  not necessarily 
fdc0: 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22 2e  "need to haves".
fdd0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f  ..    #region no
fde0: 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
fdf0: 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23  dard method....#
fe00: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
fe10: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
fe20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fe30: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
fe40: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
fe50: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
fe60: 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e  ntext_collseq_in
fe70: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
fe80: 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74 79  text, ref int ty
fe90: 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63 2c  pe, ref int enc,
fea0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
feb0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fec0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fed0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fee0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
fef0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f  lite3_context_co
ff00: 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f  llcompare_intero
ff10: 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
ff20: 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74  , byte[] p1, int
ff30: 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70   p1len, byte[] p
ff40: 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a  2, int p2len);..
ff50: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ff60: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
ff70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ff80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ff90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
ffa0: 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69  3_cursor_rowid_i
ffb0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
ffc0: 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c 20  mt, int cursor, 
ffd0: 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b  ref long rowid);
ffe0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
fff0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10000 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10010 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
10020 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
10030 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e  te3_index_column
10040 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e  _info_interop(In
10050 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
10060 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20  catalog, byte[] 
10070 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b  IndexName, byte[
10080 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65  ] ColumnName, re
10090 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c  f int sortOrder,
100a0 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72   ref int onError
100b0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f 6c  , ref IntPtr Col
100c0 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20  lation, ref int 
100d0 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  colllen);....   
100e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
100f0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
10100 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10110 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10120 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e  _table_cursor_in
10130 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
10140 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74  t, int db, int t
10150 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a  ableRootPage);..
10160 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
10170 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
10180 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
10190 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61  ...    // Standa
101a0 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f  rd API calls glo
101b0 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69  bal across versi
101c0 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20  ons.  There are 
101d0 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20  a few instances 
101e0 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  of interop calls
101f0 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72  ..    // scatter
10200 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20  ed in here, but 
10210 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63  they are only ac
10220 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f  tive when PLATFO
10230 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10240 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e  ORK is declared.
10250 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
10260 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61 70  andard sqlite ap
10270 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  i calls....#if !
10280 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10290 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
102a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
102b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
102c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
102d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
102e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
102f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10300 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10310 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10320 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10330 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  tr sqlite3_libve
10340 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20  rsion();....#if 
10350 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10380 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10390 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
103a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
103b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
103c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
103d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
103e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
103f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
10400 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
10410 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d  ion_number();...
10420 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10430 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10440 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10450 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10460 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10470 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10480 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10490 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
104a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
104b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
104c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
104d0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
104e0 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a  _sourceid();....
104f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10500 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10510 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10520 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10530 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10540 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10550 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10560 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10570 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10580 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10590 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
105a0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d   int sqlite3_com
105b0 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
105c0 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29  IntPtr zOptName)
105d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
105e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
105f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10600 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10610 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10620 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10630 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10640 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10650 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10660 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10670 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10680 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
10690 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
106a0 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
106b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
106c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
106d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
106e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
106f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10700 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10710 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10720 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10730 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10740 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10750 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10760 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10770 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  de sqlite3_enabl
10780 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 0d  e_shared_cache(.
10790 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e 61  .        int ena
107a0 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ble);....#if !PL
107b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
107c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
107d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
107e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
107f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10800 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10810 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10830 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10850 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10860 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10870 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
10880 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
10890 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74    IntPtr db, int
108a0 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
108b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
108c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
108d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
108e0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
108f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10900 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10910 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10920 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10930 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10940 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10950 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10960 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10970 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
10980 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
10990 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
109a0 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b   fileName, byte[
109b0 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20  ] procName, ref 
109c0 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d  IntPtr pError);.
109d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
109e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
109f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10a00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10a10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10a20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10a30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10a40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10a50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10a60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10a70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10a80 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10a90 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65 72  ode sqlite3_over
10aa0 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e  load_function(In
10ab0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
10ac0 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  zName, int nArgs
10ad0 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57  );....#if WINDOW
10ae0 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  S..#if !PLATFORM
10af0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10b00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10b10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10b20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10b30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10b40 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
10b50 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
10b60 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
10b70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10b80 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
10b90 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
10ba0 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
10bb0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
10bc0 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
10bd0 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63  _win32_set_direc
10be0 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f 72  tory" SQLite cor
10bf0 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
10c00 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
10c10 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
10c20 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a  ed on Windows...
10c30 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
10c40 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10c50 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10c60 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
10c70 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75  _set_directory(u
10c80 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67  int type, string
10c90 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
10ca0 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20  !DEBUG // NOTE: 
10cb0 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33 32  Should be "WIN32
10cc0 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42 55  HEAP && !MEMDEBU
10cd0 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  G"..#if !PLATFOR
10ce0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10cf0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10d00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10d10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10d20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10d30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10d40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10d50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10d60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
10d70 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
10d80 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33  he "sqlite3_win3
10d90 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53 51  2_reset_heap" SQ
10da0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
10db0 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20  y function is.. 
10dc0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
10dd0 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69   supported on Wi
10de0 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57  ndows when the W
10df0 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f  in32 native allo
10e00 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20  cator is in..   
10e10 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69   //       use (i
10e20 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20  .e. by default, 
10e30 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69  in "Release" bui
10e40 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
10e50 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f  ta.SQLite..    /
10e60 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20  /       only).  
10e70 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22  By default, in "
10e80 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66  Debug" builds of
10e90 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
10ea0 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f  ite, the..    //
10eb0 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20         MEMDEBUG 
10ec0 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65  allocator is use
10ed0 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  d...    //..    
10ee0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10ef0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10f00 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
10f10 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 28  in32_reset_heap(
10f20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10f30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10f40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10f50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10f60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10f70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10f80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10f90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10fa0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10fb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10fc0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
10fd0 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
10fe0 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70  n32_compact_heap
10ff0 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
11000 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
11010 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
11020 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
11030 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
11040 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
11050 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
11060 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
11070 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
11080 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
11090 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
110a0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
110b0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
110c0 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
110d0 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
110e0 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
110f0 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
11100 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
11110 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
11120 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
11130 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11140 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
11150 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
11160 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74  e3_win32_compact
11170 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20 6c  _heap(ref uint l
11180 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66  argest);..#endif
11190 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
111a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
111b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
111c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
111d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
111e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
111f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11200 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11210 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11220 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11230 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11240 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
11250 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  Ptr sqlite3_mall
11260 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  oc(int n);....#i
11270 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11280 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
112a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
112b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
112c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
112d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
112e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
112f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11300 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11310 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11320 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65  ntPtr sqlite3_re
11330 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20  alloc(IntPtr p, 
11340 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
11350 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11360 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11370 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11380 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11390 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
113a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
113b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
113c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
113d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
113e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
113f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11400 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e   sqlite3_free(In
11410 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
11420 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11430 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11440 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11450 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11460 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11470 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11480 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11490 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
114a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
114b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
114c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
114d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
114e0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74  ite3_open_v2(byt
114f0 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
11500 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 2c  , ref IntPtr db,
11510 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73   SQLiteOpenFlags
11520 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79 74 65  Enum flags, byte
11530 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a  [] vfsName);....
11540 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11550 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11570 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11590 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
115a0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
115b0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
115c0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
115d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
115e0 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
115f0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
11600 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11610 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11620 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
11630 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
11640 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c  pen16(string fil
11650 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  eName, ref IntPt
11660 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
11670 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11680 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11690 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
116a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
116b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
116c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
116d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
116e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
116f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11700 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11710 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
11720 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
11730 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
11740 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11750 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11760 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11770 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11780 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11790 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
117a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
117b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
117c0 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
117d0 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
117e0 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b  owid(IntPtr db);
117f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
11800 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11810 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11820 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11830 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11840 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11860 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11880 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11890 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
118a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
118b0 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
118c0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
118d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
118e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
118f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11900 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11910 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11920 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11930 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
11940 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11950 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
11960 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b  3_memory_used();
11970 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
11980 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11990 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
119a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
119b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
119c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
119d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
119e0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
119f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11a00 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
11a10 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 69  mory_highwater(i
11a20 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a  nt resetFlag);..
11a30 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
11a40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11a50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11a60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11a70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11a80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11a90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11aa0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11ab0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11ac0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11ad0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11ae0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
11af0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
11b00 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a  e3_shutdown();..
11b10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11b20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11b40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11b50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11b60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11b70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11b80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11b90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11ba0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11bb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11bc0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
11bd0 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  de sqlite3_busy_
11be0 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64  timeout(IntPtr d
11bf0 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23  b, int ms);....#
11c00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11c10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11c20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11c30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11c40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11c50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11c60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11c70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11c80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11c90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11ca0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11cb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11cc0 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62 69  sqlite3_clear_bi
11cd0 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20 73 74  ndings(IntPtr st
11ce0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
11cf0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11d00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11d10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11d20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11d30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11d40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11d50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11d60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11d70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11d80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11d90 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
11da0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
11db0 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74  _bind_blob(IntPt
11dc0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11dd0 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, Byte[] value,
11de0 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
11df0 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d  tr nTransient);.
11e00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11e10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11e20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11e30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11e40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11e50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11e60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
11e70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11e80 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
11e90 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
11ea0 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50  bind_double(IntP
11eb0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
11ec0 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ex, double value
11ed0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
11ee0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11ef0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11f00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11f10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11f20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11f30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11f40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11f50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11f60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11f70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11f80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
11f90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
11fa0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28  qlite3_bind_int(
11fb0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11fc0 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75   index, int valu
11fd0 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  e);....    //.. 
11fe0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
11ff0 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
12000 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
12010 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20  _int"; however, 
12020 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
12030 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
12040 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
12050 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
12060 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (32-bit) integer
12070 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
12080 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12090 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
120a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
120b0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
120c0 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
120d0 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  _int", CallingCo
120e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
120f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12100 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12110 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12120 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
12130 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
12140 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69  nd_int")]..#endi
12150 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12160 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12170 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12180 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28  lite3_bind_uint(
12190 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
121a0 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c   index, uint val
121b0 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#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 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12200 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12210 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12220 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12230 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
12240 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
12250 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28  ite3_bind_int64(
12260 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
12270 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c   index, long val
12280 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
12290 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
122a0 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
122b0 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
122c0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22  ite3_bind_int64"
122d0 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
122e0 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
122f0 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
12300 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
12310 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  n unsigned long 
12320 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (64-bit) integer
12330 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
12340 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12350 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12360 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12370 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
12380 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
12390 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67  _int64", Calling
123a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
123b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
123c0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
123d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
123e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
123f0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
12400 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  uint64(IntPtr st
12410 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
12420 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
12430 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
12440 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12450 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12470 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12480 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12490 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
124a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
124b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
124c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
124d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
124e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
124f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12500 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74  _bind_null(IntPt
12510 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
12520 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
12530 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12540 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12550 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12560 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12570 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12580 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12590 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
125a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
125b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
125c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
125d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
125e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
125f0 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72  bind_text(IntPtr
12600 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
12610 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
12620 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72  int nlen, IntPtr
12630 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
12640 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12650 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12660 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12670 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12680 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12690 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
126a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
126b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
126c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
126d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
126e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
126f0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
12700 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
12710 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
12720 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12730 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12740 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12760 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12770 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12780 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12790 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
127a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
127b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
127c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
127d0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
127e0 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
127f0 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d  index(IntPtr stm
12800 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  t, byte[] strNam
12810 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
12820 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12830 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12840 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12850 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12860 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12870 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12880 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
128a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
128b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
128c0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
128d0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74  te3_column_count
128e0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
128f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12900 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12910 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12920 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12930 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12940 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12950 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12960 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12970 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12980 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12990 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
129a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
129b0 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  de sqlite3_step(
129c0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
129d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
129e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
129f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12a00 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12a10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12a20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12a30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12a40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12a50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12a60 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12a70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12a80 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74  n int sqlite3_st
12a90 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50  mt_readonly(IntP
12aa0 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37  tr stmt); /* 3.7
12ab0 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50  .4+ */....#if !P
12ac0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12ad0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12ae0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12af0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12b00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12b10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12b20 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
12b30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64   static extern d
12b40 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f  ouble sqlite3_co
12b50 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50  lumn_double(IntP
12b60 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
12b70 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ex);..#endif....
12b80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12b90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12ba0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12bb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12bc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12bd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12be0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12bf0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12c00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12c10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12c20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12c30 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
12c40 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73  umn_int(IntPtr s
12c50 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
12c60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12c70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12c80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12c90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12ca0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12cb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12cc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
12cd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12ce0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
12cf0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
12d00 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
12d10 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
12d20 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
12d30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12d40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12d50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12d60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12d70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12d80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12d90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12da0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12db0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12dc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12dd0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12de0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c  qlite3_column_bl
12df0 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
12e00 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
12e10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12e20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12e40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12e50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12e60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12e70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12e90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12ea0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12eb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12ec0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
12ed0 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  mn_bytes(IntPtr 
12ee0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
12ef0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12f00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12f10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12f20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12f30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12f40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12f50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12f60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12f70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12f80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12f90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12fa0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
12fb0 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36  3_column_bytes16
12fc0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
12fd0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
12fe0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12ff0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13000 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13010 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13020 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13030 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13040 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13050 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13060 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13070 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13080 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79  static extern Ty
13090 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74  peAffinity sqlit
130a0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49  e3_column_type(I
130b0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
130c0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
130d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
130e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
130f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13100 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13110 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13130 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13150 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13160 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13170 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13180 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13190 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61  te3_create_colla
131a0 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
131b0 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20  byte[] strName, 
131c0 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
131d0 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
131e0 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b  Collation func);
131f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13200 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13210 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13220 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13230 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13240 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13250 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13260 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13270 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13280 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13290 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
132a0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
132b0 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74  _aggregate_count
132c0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
132d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
132e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
132f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13300 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13310 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13320 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13330 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13340 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13360 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13370 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13380 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
13390 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28  ite3_value_blob(
133a0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
133b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
133c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
133d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
133e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
133f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13400 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13410 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13420 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13430 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13440 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13450 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
13460 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
13470 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29  _bytes(IntPtr p)
13480 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13490 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
134a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
134b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
134c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
134d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
134e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
134f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13500 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13510 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13520 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13530 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
13540 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28  3_value_bytes16(
13550 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
13560 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13570 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13580 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13590 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
135a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
135b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
135c0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
135d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
135e0 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
135f0 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49  3_value_double(I
13600 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
13610 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
13620 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13630 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13640 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13660 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13670 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13680 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13690 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
136a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
136b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
136c0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
136d0 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50  3_value_int(IntP
136e0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
136f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13700 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13710 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13720 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13730 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13740 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13750 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
13760 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
13770 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ong sqlite3_valu
13780 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70  e_int64(IntPtr p
13790 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
137a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
137b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
137c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
137d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
137e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
137f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13800 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13810 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13820 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13830 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13840 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54   static extern T
13850 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69  ypeAffinity sqli
13860 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49  te3_value_type(I
13870 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
13880 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13890 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
138a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
138b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
138c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
138d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
138e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
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 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13910 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13920 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
13930 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
13940 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f  t_blob(IntPtr co
13950 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
13960 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
13970 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
13980 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
13990 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
139a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
139b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
139c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
139d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
139e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
139f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13a00 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
13a10 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
13a20 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f  double(IntPtr co
13a30 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61  ntext, double va
13a40 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
13a50 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13a60 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13a80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13a90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13aa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13ab0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13ac0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13ad0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13ae0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13af0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13b00 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
13b10 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50  esult_error(IntP
13b20 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
13b30 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e  [] strErr, int n
13b40 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
13b50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13b60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13b70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13b80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13b90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13ba0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13bb0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13bc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13bd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13be0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13bf0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13c00 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
13c10 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72 20  ror_code(IntPtr 
13c20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 45  context, SQLiteE
13c30 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29 3b  rrorCode value);
13c40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13c50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13c60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13c70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13c80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13c90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13ca0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13cb0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13cc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13cd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13ce0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13cf0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
13d00 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74  3_result_error_t
13d10 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f 6e  oobig(IntPtr con
13d20 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
13d30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13d40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13d50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13d60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13d70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13d80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13d90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13da0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13db0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13dc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13dd0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
13de0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
13df0 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74  rror_nomem(IntPt
13e00 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
13e10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13e20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13e40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13e50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13e60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13e70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13e90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13ea0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13eb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13ec0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
13ed0 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74 72  ult_value(IntPtr
13ee0 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72   context, IntPtr
13ef0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
13f00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13f10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13f20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13f30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13f40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13f50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13f60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
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 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13f90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13fa0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
13fb0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
13fc0 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72  _zeroblob(IntPtr
13fd0 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c   context, int nL
13fe0 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
13ff0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14000 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14020 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14030 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14040 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14050 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14060 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14070 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14080 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14090 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
140a0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
140b0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
140c0 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a   int value);....
140d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
140e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
140f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14100 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14110 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14130 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
14140 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14150 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14160 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49  3_result_int64(I
14170 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c  ntPtr context, l
14180 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
14190 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
141a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
141b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
141c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
141d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
141e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
141f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14200 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14210 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14220 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14230 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14240 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
14250 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c  ite3_result_null
14260 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
14270 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14280 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14290 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
142a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
142b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
142c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
142d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
142e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
142f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14300 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14310 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14320 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14330 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49  e3_result_text(I
14340 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
14350 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
14360 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
14370 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
14380 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14390 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
143a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
143b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
143c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
143d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
143e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
143f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14400 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
14410 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14420 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
14430 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67  ntPtr sqlite3_ag
14440 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28  gregate_context(
14450 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
14460 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
14470 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14480 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
144a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
144b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
144c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
144d0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
144e0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
144f0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
14500 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14510 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
14520 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
14530 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14540 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14550 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14560 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
14570 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74  ind_text16(IntPt
14580 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14590 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c  x, string value,
145a0 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
145b0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
145c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
145d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
145e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
145f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14600 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14610 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14620 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
14630 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
14640 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
14650 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14660 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
14670 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
14680 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
14690 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
146a0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
146b0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
146c0 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74  or16(IntPtr cont
146d0 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e  ext, string strN
146e0 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ame, int nLen);.
146f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14700 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14710 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14730 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14740 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14750 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
14760 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
14770 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
14780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14790 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
147a0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
147b0 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
147c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
147d0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
147e0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
147f0 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74  xt16(IntPtr cont
14800 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e  ext, string strN
14810 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49  ame, int nLen, I
14820 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
14830 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  );....#if INTERO
14840 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52  P_CODEC || INTER
14850 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a  OP_INCLUDE_SEE..
14860 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14870 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14880 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14890 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
148a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
148b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
148c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
148d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
148e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
148f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14900 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14910 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14920 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74   sqlite3_key(Int
14930 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
14940 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
14950 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14960 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14970 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14980 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14990 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
149a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
149b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
149c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
149d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
149e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
149f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14a00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14a10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b  Code sqlite3_rek
14a20 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ey(IntPtr db, by
14a30 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65  te[] key, int ke
14a40 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ylen);..#endif..
14a50 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e  ..#if INTEROP_IN
14a60 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69  CLUDE_ZIPVFS..#i
14a70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14a80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14a90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14aa0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14ab0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14ac0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14ad0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
14ae0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14af0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
14b00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14b10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
14b20 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76  oid zipvfsInit_v
14b30 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  2();....#if !PLA
14b40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14b50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14b60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14b70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14b80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14b90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14ba0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14bb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14bc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14bd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14be0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69  c extern void zi
14bf0 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e 74 20  pvfsInit_v3(int 
14c00 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69  regDflt);..#endi
14c10 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
14c20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14c30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14c40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14c50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14c60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14c70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14c80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14c90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14ca0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14cb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14cc0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14cd0 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
14ce0 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 69  ler(IntPtr db, i
14cf0 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65 50 72  nt ops, SQLitePr
14d00 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 66  ogressCallback f
14d10 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
14d20 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
14d30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14d40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14d50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14d60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14d70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14d80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14d90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14da0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14db0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14dc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14dd0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14de0 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
14df0 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20 64 62  orizer(IntPtr db
14e00 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a  , SQLiteAuthoriz
14e10 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  erCallback func,
14e20 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
14e30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14e40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14e50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14e60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14e70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14e80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14e90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14ea0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14ec0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14ed0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14ee0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14ef0 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28  te3_update_hook(
14f00 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
14f10 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20  eUpdateCallback 
14f20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
14f30 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
14f40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14f50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14f60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14f70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14f80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14f90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14fa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14fb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14fc0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14fd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14fe0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14ff0 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f   sqlite3_commit_
15000 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
15010 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c  SQLiteCommitCall
15020 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
15030 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
15040 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15050 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15070 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15080 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15090 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
150a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
150b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
150c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
150d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
150e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
150f0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72  ntPtr sqlite3_tr
15100 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ace(IntPtr db, S
15110 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61  QLiteTraceCallba
15120 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
15130 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  pvUser);....    
15140 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
15150 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20  _config() takes 
15160 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
15170 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
15180 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
15190 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
151a0 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
151b0 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77  ble calls that w
151c0 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a  e want to use...
151d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
151e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
151f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15200 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
15210 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
15220 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
15230 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15240 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15250 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
15260 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15270 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
15280 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
15290 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
152a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
152b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
152c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
152d0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f  qlite3_config_no
152e0 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  ne(SQLiteConfigO
152f0 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23  psEnum op);....#
15300 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15310 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15320 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15330 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
15340 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
15350 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
15360 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15380 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15390 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
153a0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
153b0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
153c0 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
153d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
153e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
153f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15400 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74  lite3_config_int
15410 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
15420 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c  Enum op, int val
15430 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
15440 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15450 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15470 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
15480 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
15490 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
154a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
154b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
154c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
154d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
154e0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
154f0 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
15500 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15510 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15520 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
15530 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
15540 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65  onfig_log(SQLite
15550 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
15560 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62  , SQLiteLogCallb
15570 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
15580 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
15590 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
155a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
155b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
155c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
155d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
155e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
155f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15600 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15610 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15620 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15630 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15640 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c  tPtr sqlite3_rol
15650 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74  lback_hook(IntPt
15660 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c  r db, SQLiteRoll
15670 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e  backCallback fun
15680 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
15690 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
156a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
156b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
156c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
156d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
156e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
156f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15700 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
15710 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15720 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15730 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15740 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15750 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28  lite3_db_handle(
15760 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
15770 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15780 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15790 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
157a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
157b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
157c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
157d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
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 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15800 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15810 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15820 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
15830 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c  e sqlite3_db_rel
15840 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50  ease_memory(IntP
15850 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
15860 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15870 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15880 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15890 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
158a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
158b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
158c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
158d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
158e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
158f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15900 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
15910 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  tr sqlite3_db_fi
15920 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62  lename(IntPtr db
15930 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29  , IntPtr dbName)
15940 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15960 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15970 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15980 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
15990 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
159a0 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  e", CallingConve
159b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
159c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
159d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
159e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
159f0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
15a00 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  = "sqlite3_db_fi
15a10 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69  lename")]..#endi
15a20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15a30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15a40 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
15a50 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49  filename_bytes(I
15a60 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
15a70 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
15a80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15a90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15aa0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15ab0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15ac0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15ad0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15ae0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15af0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15b00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15b10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15b20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15b30 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78  tPtr sqlite3_nex
15b40 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62  t_stmt(IntPtr db
15b50 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  , IntPtr stmt);.
15b60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15b70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15b80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15b90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15ba0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15bb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15bc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15bd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15be0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15bf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15c00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15c10 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
15c20 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  ode sqlite3_exec
15c30 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
15c40 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74  [] strSql, IntPt
15c50 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e  r pvCallback, In
15c60 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65  tPtr pvParam, re
15c70 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  f IntPtr errMsg)
15c80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15c90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15ca0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15cb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15cc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15cd0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15ce0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15cf0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15d00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15d10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15d20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15d30 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
15d40 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79  3_release_memory
15d50 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d  (int nBytes);...
15d60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15d70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15d80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15d90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15da0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15db0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15dc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
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 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15df0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15e00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15e10 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65  n int sqlite3_ge
15e20 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74  t_autocommit(Int
15e30 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
15e40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15e50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15e60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15e70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15e80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15e90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15ea0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15eb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15ec0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15ed0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15ee0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
15ef0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
15f00 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65  ite3_extended_re
15f10 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74  sult_codes(IntPt
15f20 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29  r db, int onoff)
15f30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15f40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15f50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15f60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15f70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15f80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15f90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15fa0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15fb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15fc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15fd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15fe0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
15ff0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72  rCode sqlite3_er
16000 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
16010 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16020 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16030 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16040 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16050 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16060 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16070 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16080 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16090 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
160a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
160b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
160c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
160d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
160e0 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49  tended_errcode(I
160f0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
16100 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16120 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16130 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16140 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16150 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16160 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16170 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16180 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16190 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
161a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
161b0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
161c0 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72  rstr(SQLiteError
161d0 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37  Code rc); /* 3.7
161e0 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f  .15+ */....    /
161f0 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
16200 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61  log() takes a va
16210 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20  riable argument 
16220 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f  list, we have to
16230 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72   overload declar
16240 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66  ations..    // f
16250 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  or all possible 
16260 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c  calls.  For now,
16270 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70   we are only exp
16280 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73  osing a single s
16290 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20  tring, and..    
162a0 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65  // depend on the
162b0 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61   caller to forma
162c0 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23  t the string...#
162d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
162e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
162f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16300 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16310 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16320 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16330 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16340 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16350 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16360 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16370 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16380 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67  void sqlite3_log
16390 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  (SQLiteErrorCode
163a0 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b   iErrCode, byte[
163b0 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23  ] zFormat);....#
163c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
163d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
163e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
163f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16420 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16430 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16440 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16450 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16460 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16470 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16480 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
16490 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20  trol(IntPtr db, 
164a0 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20  byte[] zDbName, 
164b0 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70  int op, IntPtr p
164c0 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Arg);....#if !PL
164d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
164e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
164f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16500 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16510 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16530 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16550 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16560 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16570 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
16580 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
16590 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74  init(IntPtr dest
165a0 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74  Db, byte[] zDest
165b0 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75  Name, IntPtr sou
165c0 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53  rceDb, byte[] zS
165d0 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ourceName);....#
165e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
165f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16600 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16610 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16620 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16630 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16640 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
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 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16670 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16680 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16690 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
166a0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73  sqlite3_backup_s
166b0 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75  tep(IntPtr backu
166c0 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a  p, int nPage);..
166d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
166e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
166f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16700 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16710 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16720 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16730 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16740 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16750 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16760 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16770 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16780 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
16790 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28  ackup_remaining(
167a0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
167b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
167c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
167d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
167e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
167f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16800 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16810 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16820 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16830 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16840 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16850 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16860 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
16870 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74  backup_pagecount
16880 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
16890 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
168a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
168b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
168c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
168d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
168e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
168f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16900 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16910 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16930 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16940 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16950 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63  Code sqlite3_dec
16960 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72  lare_vtab(IntPtr
16970 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c   db, IntPtr zSQL
16980 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16990 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
169a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
169b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
169c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
169d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
169e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
169f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16a00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16a10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16a20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16a30 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16a40 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e  lite3_mprintf(In
16a50 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61  tPtr format, __a
16a60 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65  rglist);..    #e
16a70 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
16a80 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61  // SQLite API ca
16a90 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  lls that are pro
16aa0 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b  vided by "well-k
16ab0 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73  nown" extensions
16ac0 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61   that may be sta
16ad0 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20  tically..    // 
16ae0 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20  linked with the 
16af0 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69  SQLite core nati
16b00 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65  ve library curre
16b10 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ntly in use...  
16b20 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73    #region extens
16b30 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63  ion sqlite api c
16b40 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  alls..#if INTERO
16b50 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
16b60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16b70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16b80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16b90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16ba0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16bb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16bc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
16bd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16be0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
16bf0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
16c00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16c10 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
16c20 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
16c30 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  le_module(IntPtr
16c40 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
16c50 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f  , ref sqlite3_mo
16c60 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74  dule module, Int
16c70 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
16c80 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
16c90 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69  xDestroy);....#i
16ca0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16cb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16cc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16cd0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16ce0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16cf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16d00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16d10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16d20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16d30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16d40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
16d50 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70  oid sqlite3_disp
16d60 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ose_module(IntPt
16d70 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  r pModule);..#en
16d80 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
16d90 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
16da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16de0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
16df0 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74  egion sqlite int
16e00 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28  erop api calls (
16e10 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
16e20 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69  mework only)..#i
16e30 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
16e40 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21  CTFRAMEWORK && !
16e50 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
16e60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16e70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
16e80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16e90 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
16ea0 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
16eb0 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
16ec0 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
16ed0 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20  ong rowId);.... 
16ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16ef0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
16f00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16f10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
16f20 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f  te3_memory_used_
16f30 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67  interop(ref long
16f40 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
16f50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16f60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
16f70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16f80 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16f90 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
16fa0 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65  r_interop(int re
16fb0 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e  setFlag, ref lon
16fc0 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20  g bytes);....   
16fd0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16fe0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
16ff0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17000 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17010 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
17020 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  d_double_interop
17030 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
17040 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
17050 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
17060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17070 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
17080 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17090 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
170a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
170b0 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
170c0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
170d0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
170e0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
170f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17100 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
17110 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
17120 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
17130 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  p")]..    intern
17140 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17150 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17160 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
17170 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
17180 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
17190 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76  dex, ref ulong v
171a0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
171b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
171c0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
171d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
171e0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
171f0 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
17200 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
17210 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
17220 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
17230 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
17240 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17250 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17260 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
17270 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
17280 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
17290 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
172a0 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
172b0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
172c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
172d0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
172e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
172f0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
17300 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  lue_double_inter
17310 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
17320 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
17330 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
17340 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17350 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17360 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
17370 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
17380 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
17390 74 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20  tr p, ref Int64 
173a0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
173b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
173c0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
173d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
173e0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
173f0 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
17400 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
17410 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65  text, ref double
17420 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
17430 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17440 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
17450 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17460 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
17470 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
17480 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
17490 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20  text, ref Int64 
174a0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
174b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
174c0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
174d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
174e0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
174f0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
17500 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72  ble_module_inter
17510 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  op(..        Int
17520 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
17530 61 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64  ame, IntPtr pMod
17540 75 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f  ule, int iVersio
17550 6e 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61  n, xCreate xCrea
17560 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f  te,..        xCo
17570 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20  nnect xConnect, 
17580 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74  xBestIndex xBest
17590 49 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65  Index, xDisconne
175a0 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d  ct xDisconnect,.
175b0 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
175c0 79 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65  y xDestroy, xOpe
175d0 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20  n xOpen, xClose 
175e0 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20  xClose, xFilter 
175f0 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20  xFilter,..      
17600 20 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78    xNext xNext, x
17610 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d  Eof xEof, xColum
17620 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49  n xColumn, xRowI
17630 64 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74  d xRowId, xUpdat
17640 65 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e xUpdate,..    
17650 20 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69      xBegin xBegi
17660 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20  n, xSync xSync, 
17670 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c  xCommit xCommit,
17680 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
17690 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78  back,..        x
176a0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
176b0 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e  ndFunction, xRen
176c0 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61  ame xRename, xSa
176d0 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
176e0 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65  nt,..        xRe
176f0 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20  lease xRelease, 
17700 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c  xRollbackTo xRol
17710 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20  lbackTo, IntPtr 
17720 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20  pClientData,..  
17730 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f        xDestroyMo
17740 64 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64  dule xDestroyMod
17750 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
17760 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43     // PLATFORM_C
17770 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
17780 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
17790 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  ARD..    #endreg
177a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
17800 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c  egion Native Del
17810 65 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45  egates..#if INTE
17820 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
17830 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
17840 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17850 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
17860 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
17870 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
17880 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17890 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
178a0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
178b0 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28  rorCode xCreate(
178c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
178d0 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49   pDb,..        I
178e0 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
178f0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
17900 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
17910 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
17920 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
17930 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
17940 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
17950 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
17960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
179b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
179c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
179d0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
179e0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
179f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17a00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
17a10 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
17a20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
17a30 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
17a40 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
17a50 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
17a60 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  x,..        int 
17a70 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
17a80 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
17a90 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
17aa0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
17ab0 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
17ac0 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
17ad0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17b20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17b30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17b40 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
17b50 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
17b60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17b70 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
17b80 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
17b90 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
17ba0 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28  Code xBestIndex(
17bb0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
17bc0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
17bd0 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a   IntPtr pIndex..
17be0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
17bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
17c40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17c50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17c60 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
17c70 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
17c80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17c90 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
17ca0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
17cb0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
17cc0 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  e xDisconnect(..
17cd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17ce0 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
17cf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17d40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17d50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17d60 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
17d70 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
17d80 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
17d90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17da0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
17db0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
17dc0 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79  rorCode xDestroy
17dd0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
17de0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
17df0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e40 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
17e50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17e60 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
17e70 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
17e80 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
17e90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17ea0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
17eb0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
17ec0 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e  eErrorCode xOpen
17ed0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
17ee0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
17ef0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75    ref IntPtr pCu
17f00 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
17f10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17f60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17f70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f80 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
17f90 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
17fa0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
17fb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
17fc0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
17fd0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
17fe0 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d  rorCode xClose(.
17ff0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
18000 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
18010 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
18070 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18080 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
18090 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
180a0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
180b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
180c0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
180d0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
180e0 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74  eErrorCode xFilt
180f0 65 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  er(..        Int
18100 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
18110 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d        int idxNum
18120 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
18130 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
18140 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
18150 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
18160 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  v..    );....   
18170 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
181c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
181d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
181e0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
181f0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
18200 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18210 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
18220 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
18230 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
18240 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20  Code xNext(..   
18250 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
18260 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
18270 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
182c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
182d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
182e0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
182f0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
18300 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18310 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
18320 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
18330 6c 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28  legate int xEof(
18340 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
18350 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
18360 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
18370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
183c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
183d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
183e0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
183f0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
18400 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18410 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
18420 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
18430 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c  teErrorCode xCol
18440 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  umn(..        In
18450 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
18460 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
18470 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  ontext,..       
18480 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
18490 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
184a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
184f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18500 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
18510 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
18520 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
18530 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18540 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
18550 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
18560 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
18570 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49  owId(..        I
18580 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
18590 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
185a0 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
185b0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
185c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
18610 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18620 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
18630 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
18640 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
18650 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18660 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
18670 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
18680 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74  ErrorCode xUpdat
18690 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
186a0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
186b0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
186c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
186d0 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
186e0 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
186f0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
18700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
18750 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18760 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
18770 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
18780 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
18790 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
187a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
187b0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
187c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
187d0 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  egin(..        I
187e0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
187f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
18850 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18860 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
18870 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
18880 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
18890 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
188a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
188b0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
188c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
188d0 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49  Sync(..        I
188e0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
188f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18940 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
18950 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18960 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
18970 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
18980 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
18990 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
189a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
189b0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
189c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
189d0 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
189e0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
189f0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
18a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
18a50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18a60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18a70 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
18a80 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
18a90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18aa0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
18ab0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
18ac0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18ad0 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20   xRollback(..   
18ae0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
18af0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
18b00 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18b50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18b60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18b70 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
18b80 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
18b90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18ba0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
18bb0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
18bc0 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75  gate int xFindFu
18bd0 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
18be0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
18bf0 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67          int nArg
18c00 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
18c10 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  r zName,..      
18c20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c    ref SQLiteCall
18c30 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  back callback,..
18c40 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
18c50 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20  tr pUserData..  
18c60 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
18c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
18cc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18cd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18ce0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
18cf0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
18d00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18d10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18d20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
18d30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18d40 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
18d50 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
18d60 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
18d70 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  zNew..    );....
18d80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18dd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18de0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18df0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
18e00 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
18e10 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
18e20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
18e30 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
18e40 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
18e50 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69  rorCode xSavepoi
18e60 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nt(..        Int
18e70 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
18e80 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
18e90 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
18ea0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18ef0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18f00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18f10 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
18f20 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
18f30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18f40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
18f50 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
18f60 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
18f70 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d  rCode xRelease(.
18f80 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
18f90 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
18fa0 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
18fb0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
18fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19000 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
19010 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19020 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19030 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
19040 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
19050 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19060 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
19070 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
19080 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
19090 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  e xRollbackTo(..
190a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
190b0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
190c0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
190d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
19130 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19140 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19150 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
19160 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
19170 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19180 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
19190 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
191a0 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f   void xDestroyMo
191b0 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69  dule(IntPtr pCli
191c0 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69  entData);..#endi
191d0 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
191e0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
19240 69 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63  ion Native Struc
19250 74 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  tures..#if INTER
19260 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
19270 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
19280 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
19290 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
192a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
192b0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d   sqlite3_module.
192c0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
192d0 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73  public int iVers
192e0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ion;..        pu
192f0 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72  blic xCreate xCr
19300 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  eate;..        p
19310 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78  ublic xConnect x
19320 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  Connect;..      
19330 20 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e    public xBestIn
19340 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d  dex xBestIndex;.
19350 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
19360 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
19370 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  connect;..      
19380 20 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f    public xDestro
19390 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20  y xDestroy;..   
193a0 20 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65       public xOpe
193b0 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20  n xOpen;..      
193c0 20 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20    public xClose 
193d0 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  xClose;..       
193e0 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20   public xFilter 
193f0 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20  xFilter;..      
19400 20 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78    public xNext x
19410 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  Next;..        p
19420 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b  ublic xEof xEof;
19430 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19440 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e   xColumn xColumn
19450 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
19460 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b  c xRowId xRowId;
19470 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19480 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65   xUpdate xUpdate
19490 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
194a0 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b  c xBegin xBegin;
194b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
194c0 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20   xSync xSync;.. 
194d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
194e0 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a  ommit xCommit;..
194f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
19500 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
19510 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ck;..        pub
19520 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  lic xFindFunctio
19530 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b  n xFindFunction;
19540 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19550 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
19560 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68  ;..        /* Th
19570 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
19580 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31  are in version 1
19590 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
195a0 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
195b0 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73   * object.  Thos
195c0 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20  e below are for 
195d0 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72  version 2 and gr
195e0 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20  eater. */..     
195f0 20 20 20 70 75 62 6c 69 63 20 78 53 61 76 65 70     public xSavep
19600 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b  oint xSavepoint;
19610 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19620 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61   xRelease xRelea
19630 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  se;..        pub
19640 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  lic xRollbackTo 
19650 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20  xRollbackTo;..  
19660 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
19670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
196c0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
196d0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
196e0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
196f0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
19700 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20  _vtab..    {..  
19710 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
19720 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20  Ptr pModule;..  
19730 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
19740 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e   nRef; /* NO LON
19750 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  GER USED */..   
19760 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
19770 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20  tr zErrMsg;..   
19780 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
197e0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
197f0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
19800 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19810 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
19820 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20  vtab_cursor..   
19830 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
19840 69 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b  ic IntPtr pVTab;
19850 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
19860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
198b0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
198c0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
198d0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
198e0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
198f0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
19900 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20  raint..    {..  
19910 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
19920 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
19930 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  raint(..        
19940 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
19950 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
19960 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  aint..          
19970 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
19980 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
19990 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
199a0 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
199b0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
199c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
199d0 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d            iColum
199e0 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  n = constraint.i
199f0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
19a00 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f           op = co
19a10 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20  nstraint.op;..  
19a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73                us
19a30 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e  able = constrain
19a40 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20  t.usable;..     
19a50 20 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d             iTerm
19a60 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61  Offset = constra
19a70 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b  int.iTermOffset;
19a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19a90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
19aa0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19af0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
19b00 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  int iColumn;..  
19b10 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
19b20 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
19b30 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20  ntOp op;..      
19b40 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73    public byte us
19b50 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  able;..        p
19b60 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f  ublic int iTermO
19b70 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ffset;..    }...
19b80 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
19b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
19be0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
19bf0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
19c00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
19c10 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
19c20 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d  _orderby..    {.
19c30 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
19c40 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
19c50 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20  derby(..        
19c60 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f      SQLiteIndexO
19c70 72 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a  rderBy orderBy..
19c80 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
19c90 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
19ca0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
19cb0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19cc0 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29  orderBy != null)
19cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19cf0 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72   iColumn = order
19d00 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  By.iColumn;..   
19d10 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
19d20 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63  c = orderBy.desc
19d30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
19d40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
19d50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19da0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19db0 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a   int iColumn; /*
19dc0 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a   Column number *
19dd0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
19de0 63 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f  c byte desc;   /
19df0 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e  * True for DESC.
19e00 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e    False for ASC.
19e10 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
19e20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19e70 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
19e80 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
19e90 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
19ea0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
19eb0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
19ec0 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a  nstraint_usage..
19ed0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
19ee0 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
19ef0 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
19f00 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
19f10 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
19f20 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f  nstraintUsage co
19f30 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20  nstraintUsage.. 
19f40 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
19f50 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
19f60 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
19f70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
19f80 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21  onstraintUsage !
19f90 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
19fa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19fb0 20 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65          argvInde
19fc0 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  x = constraintUs
19fd0 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a  age.argvIndex;..
19fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ff0 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e  omit = constrain
1a000 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20  tUsage.omit;..  
1a010 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a030 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a080 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1a090 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66  argvIndex; /* if
1a0a0 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20   >0, constraint 
1a0b0 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20  is part of argv 
1a0c0 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20  to xFilter */.. 
1a0d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
1a0e0 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20  te omit;     /* 
1a0f0 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65  Do not code a te
1a100 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73  st for this cons
1a110 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d  traint */..    }
1a120 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1a130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a170 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
1a180 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
1a190 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
1a1a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a1b0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
1a1c0 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d  dex_info..    {.
1a1d0 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75  .        /* Inpu
1a1e0 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ts */..        p
1a1f0 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74  ublic int nConst
1a200 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72  raint; /* Number
1a210 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
1a220 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
1a230 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1a240 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
1a250 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1a260 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20  c int nOrderBy; 
1a270 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
1a280 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65  entries in aOrde
1a290 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  rBy */..        
1a2a0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f  public IntPtr aO
1a2b0 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20  rderBy;..       
1a2c0 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a   /* Outputs */..
1a2d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
1a2e0 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
1a2f0 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20  tUsage;..       
1a300 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e   public int idxN
1a310 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a  um;           /*
1a320 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
1a330 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64  identify the ind
1a340 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ex */..        p
1a350 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78  ublic string idx
1a360 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53  Str;        /* S
1a370 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20  tring, possibly 
1a380 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71  obtained from sq
1a390 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d  lite3_malloc */.
1a3a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a3b0 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64  int needToFreeId
1a3c0 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64  xStr; /* Free id
1a3d0 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74  xStr using sqlit
1a3e0 65 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75  e3_free() if tru
1a3f0 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  e */..        pu
1a400 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79  blic int orderBy
1a410 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72  Consumed;  /* Tr
1a420 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20  ue if output is 
1a430 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20  already ordered 
1a440 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1a450 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61  ic double estima
1a460 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69  tedCost; /* Esti
1a470 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73  mated cost of us
1a480 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a  ing this index *
1a490 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1a4a0 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64  c long estimated
1a4b0 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d  Rows;   /* Estim
1a4c0 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72  ated number of r
1a4d0 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d  ows returned */.
1a4e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a4f0 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73  SQLiteIndexFlags
1a500 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61   idxFlags; /* Ma
1a510 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44  sk of SQLITE_IND
1a520 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20  EX_SCAN_* flags 
1a530 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1a540 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b  ic long colUsed;
1a550 20 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75           /* Inpu
1a560 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d  t: Mask of colum
1a570 6e 73 20 75 73 65 64 20 62 79 20 73 74 61 74 65  ns used by state
1a580 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ment */..    }..
1a590 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
1a5a0 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20  region..  }.... 
1a5b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a600 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1a610 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a620 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74  .  internal abst
1a630 72 61 63 74 20 63 6c 61 73 73 20 43 72 69 74 69  ract class Criti
1a640 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73  calHandle : IDis
1a650 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  posable..  {..  
1a660 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f    private bool _
1a670 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70  isClosed;..    p
1a680 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72 20  rotected IntPtr 
1a690 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70  handle;....    p
1a6a0 72 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61  rotected Critica
1a6b0 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69  lHandle(IntPtr i
1a6c0 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
1a6d0 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
1a6e0 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69   handle = invali
1a6f0 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20  dHandleValue;.. 
1a700 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
1a710 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a   false;..    }..
1a720 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48  ..    ~CriticalH
1a730 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  andle()..    {..
1a740 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61        Dispose(fa
1a750 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lse);..    }....
1a760 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
1a770 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20   Cleanup()..    
1a780 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73  {..      if (!Is
1a790 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b  Closed)..      {
1a7a0 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f  ..        this._
1a7b0 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b  isClosed = true;
1a7c0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49  ..        if (!I
1a7d0 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20  sInvalid)..     
1a7e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a7f0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b  ReleaseHandle();
1a800 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53  ..          GC.S
1a810 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
1a820 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
1a830 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
1a840 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
1a850 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20  void Close()..  
1a860 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
1a870 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
1a880 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
1a890 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
1a8a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
1a8b0 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
1a8c0 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
1a8d0 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
1a8e0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
1a8f0 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a  posing)..    {..
1a900 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b        Cleanup();
1a910 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1a920 72 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63  rotected abstrac
1a930 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  t bool ReleaseHa
1a940 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70  ndle();....    p
1a950 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65  rotected void Se
1a960 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76  tHandle(IntPtr v
1a970 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
1a980 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c      handle = val
1a990 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ue;..    }....  
1a9a0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
1a9b0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1a9c0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
1a9d0 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75   _isClosed = tru
1a9e0 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70  e;..      GC.Sup
1a9f0 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
1aa00 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  is);..    }.... 
1aa10 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49     public bool I
1aa20 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a  sClosed..    {..
1aa30 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
1aa40 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d  rn _isClosed; }.
1aa50 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
1aa60 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f  blic abstract bo
1aa70 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
1aa80 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d    {..      get;.
1aa90 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d  .    }....  }...
1aaa0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1ab00 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1ab10 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1ab20 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
1ab30 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
1ab40 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
1ab50 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
1ab60 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
1ab70 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
1ab80 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
1ab90 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
1aba0 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
1abb0 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
1abc0 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1abd0 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
1abe0 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
1abf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ac00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1ac10 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
1ac20 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
1ac30 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
1ac40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1ac50 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1ac60 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
1ac70 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
1ac80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
1ac90 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
1aca0 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
1acb0 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
1acc0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1acd0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1ace0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1acf0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ad40 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1ad50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ad60 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1ad70 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
1ad80 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1ad90 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
1ada0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adf0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1ae00 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
1ae10 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
1ae20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ae70 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1ae80 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1ae90 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1aea0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1aeb0 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
1aec0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1aed0 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
1aee0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1aef0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1af00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1af10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1af20 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
1af30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1af40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1af50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af60 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
1af70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1af80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1af90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1afa0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1afb0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
1afc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b010 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
1b020 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
1b030 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
1b040 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
1b050 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
1b060 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
1b070 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
1b080 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1b090 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b0a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1b0b0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1b0c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1b0d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b0e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
1b0f0 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
1b100 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1b110 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
1b120 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
1b130 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1b140 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1b1a0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
1b1b0 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
1b1c0 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
1b1d0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
1b1e0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b1f0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
1b200 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1b210 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
1b220 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
1b230 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1b240 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
1b250 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b260 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ods.connectionCo
1b270 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
1b280 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1b290 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b2e0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
1b2f0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
1b300 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
1b310 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1b320 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b330 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1b340 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1b350 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1b360 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1b380 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65   (!ownHandle) re
1b390 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
1b3a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b3b0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1b3c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1b3d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b3e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1b400 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
1b410 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
1b420 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b440 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
1b450 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51  Zero);....#if SQ
1b460 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
1b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1b480 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
1b490 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4b0 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74      closeConnect
1b4c0 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
1b4d0 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  andle);..#else..
1b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4f0 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
1b500 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1b510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b520 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1b530 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
1b540 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  this, localHandl
1b550 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
1b560 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1b570 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1b580 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1b590 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1b5a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5c0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1b5d0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b5e0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1b5f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b600 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1b610 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1b620 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b640 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
1b650 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
1b660 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
1b670 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b680 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b690 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b6c0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
1b6d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1b6e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1b6f0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1b700 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b710 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
1b720 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1b730 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1b740 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b760 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1b770 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1b780 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
1b790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b7a0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1b7b0 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1b7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b7d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b7e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1b7f0 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1b800 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1b810 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1b820 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
1b830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b840 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1b850 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
1b860 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
1b870 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
1b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b890 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1b8a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1b8b0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
1b8c0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1b8d0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1b8e0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1b8f0 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
1b900 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1b910 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1b920 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
1b930 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1b940 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1b950 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1b960 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1b970 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b9a0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1b9b0 4c 69 6e 65 28 55 6e 73 61 66 65 4e 61 74 69 76  Line(UnsafeNativ
1b9c0 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  eMethods.StringF
1b9d0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9f0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1ba00 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1ba10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65       "CloseConne
1ba30 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65  ction: {0}, exce
1ba40 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
1ba50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba60 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
1ba70 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1ba80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1baa0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1bab0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1bac0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1bad0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1bae0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1baf0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
1bb00 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1bb10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bb20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1bb30 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1bb40 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1bb50 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1bb60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1bb70 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1bb80 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
1bb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1bbb0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
1bbc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1bbd0 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bbf0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
1bc00 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1bc10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1bc60 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
1bc70 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
1bc80 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
1bc90 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
1bca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
1bcb0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
1bcc0 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
1bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1bce0 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
1bcf0 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e  thods.connection
1bd00 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
1bd10 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
1bd20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bd70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1bd80 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a  bool OwnHandle..
1bd90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1bda0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1bdb0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1bdc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bdd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1bde0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1bdf0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1be00 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1be10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1be20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1be30 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20   ownHandle;..   
1be40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1be50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1be60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1be70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1beb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1bec0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1bed0 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
1bee0 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
1bef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1bf00 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1bf10 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1bf20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1bf30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bf40 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1bf50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1bf60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1bf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf80 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
1bf90 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
1bfa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bfb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1bfc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1bfd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1bfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c020 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1c030 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1c040 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
1c050 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
1c060 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1c070 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c080 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1c090 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1c0a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c0b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c0c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
1c0d0 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
1c0e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1c0f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
1c100 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
1c110 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1c120 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
1c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c170 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
1c180 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
1c190 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
1c1a0 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   Provides finali
1c1b0 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66  zation support f
1c1c0 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c  or unmanaged SQL
1c1d0 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d  ite statements..
1c1e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
1c1f0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
1c200 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1c210 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
1c220 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
1c230 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c240 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1c250 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
1c260 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
1c270 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
1c280 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
1c290 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c2e0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1c2f0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1c300 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
1c310 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c340 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
1c360 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1c370 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
1c380 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
1c390 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  r(SQLiteStatemen
1c3a0 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20  tHandle stmt).. 
1c3b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c3c0 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21        if (stmt !
1c3d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1c3e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1c3f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c400 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1c410 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d         lock (stm
1c420 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  t.syncRoot)..#en
1c430 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1c440 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c450 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1c460 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d  rn stmt.handle;.
1c470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c480 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c490 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
1c4a0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1c4b0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
1c4c0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
1c520 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65  rnal SQLiteState
1c530 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74  mentHandle(SQLit
1c540 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1c550 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74  e cnn, IntPtr st
1c560 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mt)..           
1c570 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
1c580 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1c590 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c5a0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1c5b0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1c5c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1c5d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c5e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e           this.cn
1c5f0 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20  n = cnn;..      
1c600 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1c610 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20  dle(stmt);..    
1c620 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c630 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c690 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1c6a0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1c6b0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
1c6c0 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
1c6d0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
1c6e0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1c6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1c700 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
1c710 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1c720 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1c730 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
1c740 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1c750 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1c760 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c7c0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
1c7d0 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
1c7e0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
1c7f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c800 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1c810 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
1c820 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c830 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1c840 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
1c850 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
1c860 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
1c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c880 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
1c890 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
1c8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c8b0 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
1c8c0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1c8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c8e0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1c8f0 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
1c900 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
1c910 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
1c920 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1c930 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1c940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1c950 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1c960 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c970 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
1c980 57 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65  WriteLine(Unsafe
1c990 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74  NativeMethods.St
1c9a0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
1c9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9c0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
1c9d0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
1c9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c9f0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
1ca00 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
1ca10 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
1ca20 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1ca50 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1ca60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ca80 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
1ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1caa0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1cab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cac0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1cad0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
1cae0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1caf0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cb00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1cb30 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
1cb40 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
1cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb60 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1cb70 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1cba0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1cbb0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1cbc0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1cbd0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
1cbe0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1cc00 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1cc10 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74  ethods.statement
1cc20 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1cc30 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1cc50 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
1cc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1cc70 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1cc80 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1cc90 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1cca0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
1ccb0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
1ccc0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1ccd0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
1cce0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
1ccf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1cd00 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1cd10 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1cd20 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1cd30 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1cd40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd60 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1cd70 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
1cd80 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
1cd90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1cda0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
1cdb0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
1cdc0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
1cdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cde0 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
1cdf0 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  ent: {0}, except
1ce00 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
1ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
1ce30 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1ce50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ce60 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1ce70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ce80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1ce90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1cea0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ceb0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
1cec0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1ced0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cee0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1cef0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1cf00 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1cf10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cf20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1cf30 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1cf40 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
1cf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1cf60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1cf70 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1cf80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1cf90 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
1cfa0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1cfb0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
1cfc0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1cfd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d020 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1d030 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d040 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
1d050 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
1d060 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1d070 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
1d080 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
1d090 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1d0a0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1d0b0 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1d0c0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1d0d0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1d0e0 20 20 20 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 2f 2f 2f 2f  ////////////////
1d110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d130 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1d140 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
1d150 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
1d160 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1d170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1d180 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1d190 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1b0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1d1c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1d1d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1f0 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
1d200 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
1d210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d220 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1d230 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1d240 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d290 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
1d2a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1d2b0 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
1d2c0 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
1d2d0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1d2e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d2f0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1d300 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1d310 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1d320 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d330 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
1d340 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
1d350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1d360 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1d370 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
1d380 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1d390 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d3e0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
1d3f0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43  teBackupHandle C
1d400 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
1d410 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
1d420 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
1d430 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
1d440 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d  backup objects..
1d450 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
1d460 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
1d470 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20  eBackupHandle : 
1d480 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
1d490 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1d4a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d4b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
1d4c0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
1d4d0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
1d4e0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
1d4f0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1d500 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d550 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
1d560 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1d570 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
1d580 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d5d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1d5e0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
1d5f0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
1d600 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
1d610 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  e backup)..     
1d620 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d630 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20    if (backup != 
1d640 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1d650 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1d660 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d670 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1d680 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75       lock (backu
1d690 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  p.syncRoot)..#en
1d6a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1d6b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d6c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d6d0 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65  rn backup.handle
1d6e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d6f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1d700 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d710 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1d720 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
1d730 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d780 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
1d790 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63  ternal SQLiteBac
1d7a0 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  kupHandle(SQLite
1d7b0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1d7c0 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63   cnn, IntPtr bac
1d7d0 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20  kup)..          
1d7e0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
1d7f0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1d800 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d810 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1d820 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1d830 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1d840 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d850 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
1d860 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
1d870 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1d880 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20  ndle(backup);.. 
1d890 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1d8a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d8b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d900 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
1d910 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
1d920 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
1d930 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
1d940 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
1d950 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1d960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1d970 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
1d980 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1d990 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1d9a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61  NativeMethods.ba
1d9b0 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  ckupCount);..#en
1d9c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1d9d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1da30 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1da40 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1da50 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1da60 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1da70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1da80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1da90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1daa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dab0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1dac0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1dad0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1daf0 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1db00 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
1db10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1db20 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1db30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db50 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
1db60 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
1db70 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
1db80 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1db90 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1dba0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1dbb0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1dbc0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbe0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1dbf0 65 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e(UnsafeNativeMe
1dc00 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1dc10 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1dc30 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1dc40 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc60 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
1dc70 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
1dc80 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
1dc90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1dca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1dcb0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1dcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dce0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
1dcf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dd00 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1dd10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1dd20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1dd30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
1dd40 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1dd50 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1dd60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1dd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd80 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1dd90 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
1dda0 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddc0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1ddd0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddf0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1de00 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1de10 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1de20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1de30 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1de40 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1de50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1de60 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1de70 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
1de80 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1de90 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1dea0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1deb0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1dec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1ded0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1dee0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1def0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1df00 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1df10 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1df20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1df30 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1df40 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1df50 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1df60 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1df70 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1df80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df90 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1dfa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1dfc0 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73 61  e.WriteLine(Unsa
1dfd0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1dfe0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
1dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e000 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1e010 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1e020 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1e030 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
1e040 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
1e050 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1e060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e070 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1e080 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1e090 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1e0a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e0b0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e0d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e0e0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1e0f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e100 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1e110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1e120 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1e130 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1e150 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1e160 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1e170 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1e190 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1e1a0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1e1b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e1c0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1e1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1e1e0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1e1f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1e200 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1e210 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1e220 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e270 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1e280 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1e290 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1e2a0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1e2b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e2c0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1e2d0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1e2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e2f0 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1e300 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70  veMethods.backup
1e310 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
1e320 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
1e330 20 20 20 20 20 20 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 2f  ////////////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e380 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1e390 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
1e3a0 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
1e3b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e3c0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
1e3d0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1e3e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e3f0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1e400 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1e410 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1e420 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e440 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
1e450 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
1e460 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1e470 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e480 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1e490 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4e0 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
1e4f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1e500 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
1e510 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
1e520 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1e530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e540 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1e550 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1e560 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1e570 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e580 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e590 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
1e5a0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1e5b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
1e5c0 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
1e5d0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d    #endregion..}.
1e5e0 0a                                               .