System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 64ba40c6edb0dc76c0dbcf7de30fa1dd450d5cee:


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 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
1230: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1240: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
1250: 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69 73 20  initialize this 
1260: 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c 6f 61  class by pre-loa
1270: 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ding the native 
1280: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f  SQLite..      //
1290: 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68  / library for th
12a0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
12b0: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
12c0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
12d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
12e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
12f0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f  ternal static vo
1300: 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d  id Initialize().
1310: 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  .      {..#if SQ
1320: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
1330: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
1340: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
1350: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
1360: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
1370: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
1380: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1390: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
13a0: 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  he "No_PreLoadSQ
13b0: 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  Lite" environmen
13c0: 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  t variable is se
13d0: 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20 20 20  t (to..         
13e0: 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74 68 69   //       anythi
13f0: 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 75  ng), skip all ou
1400: 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 61  r special code a
1410: 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e  nd simply return
1420: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1430: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
1440: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22  etSettingValue("
1450: 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  No_PreLoadSQLite
1460: 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
1470: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1480: 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66   return;..#endif
1490: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
14a0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
14b0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
14c0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45         {..#if DE
14d0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
14e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14f0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
1500: 65 61 74 65 20 74 68 65 20 6c 69 73 74 20 6f 66  eate the list of
1510: 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61 74   statistics that
1520: 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68   will contain th
1530: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1540: 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72   //       number
1550: 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73   of times each s
1560: 65 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73  etting value has
1570: 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20   been read...   
1580: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
15a0: 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  (settingReadCoun
15b0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
15d0: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
15e0: 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
15f0: 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29  y<string, int>()
1600: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1610: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1630: 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20  TODO: Make sure 
1640: 74 68 69 73 20 6c 69 73 74 20 69 73 20 75 70 64  this list is upd
1650: 61 74 65 64 20 69 66 20 74 68 65 20 73 75 70 70  ated if the supp
1660: 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20  orted..         
1670: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
1680: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
1690: 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f  ture names and/o
16a0: 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  r platform names
16b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16c0: 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67 65 73  //       changes
16d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
16f0: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
1700: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
1710: 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1740: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1750: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1760: 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d 61 70  : Create the map
1770: 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72   of processor ar
1780: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73  chitecture names
1790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20      //       to 
17b0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75  platform names u
17c0: 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65  sing a case-inse
17d0: 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a  nsitive string..
17e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f0: 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61    //       compa
1800: 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  rer...          
1810: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
1830: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
1840: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a  urePlatforms =..
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1860: 20 20 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f        new Dictio
1870: 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72  nary<string, str
1880: 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20  ing>(..         
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e   StringComparer.
18b0: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
18c0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
18d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18f0: 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68  / NOTE: Setup th
1900: 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f  e list of platfo
1910: 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61  rm names associa
1920: 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
1930: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1940: 20 20 20 20 20 74 68 65 20 73 75 70 70 6f 72 74       the support
1950: 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  ed processor arc
1960: 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20  hitectures...   
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1980: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1990: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
19a0: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
19b0: 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22  rms.Add("x86", "
19c0: 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20  Win32");..      
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
19e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
19f0: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
1a00: 41 4d 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d  AMD64", "x64");.
1a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a20: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
1a30: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
1a40: 73 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22 49  s.Add("IA64", "I
1a50: 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20  tanium");..     
1a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
1a70: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a80: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
1a90: 22 41 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b  "ARM", "WinCE");
1aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ab0: 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f  }....#if SQLITE_
1ac0: 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
1ad0: 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
1ae0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1af0: 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52  RAMEWORK..#if PR
1b00: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
1b10: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20  RARY..          
1b20: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b30: 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a        // BUGBUG:
1b40: 20 57 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65   What about othe
1b50: 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  r application do
1b60: 6d 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20  mains?..        
1b70: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1b80: 20 20 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c          if (_SQL
1b90: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
1ba0: 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1bb0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1bc0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bd0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1be0: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
1bf0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1c00: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1c10: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1c20: 65 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  ecture = null;..
1c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c40: 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a      /* IGNORED *
1c50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1c60: 20 20 20 20 20 53 65 61 72 63 68 46 6f 72 44 69       SearchForDi
1c70: 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20  rectory(..      
1c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c90: 72 65 66 20 62 61 73 65 44 69 72 65 63 74 6f 72  ref baseDirector
1ca0: 79 2c 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72  y, ref processor
1cb0: 41 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a  Architecture);..
1cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cd0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1ce0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1cf0: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72  E: Attempt to pr
1d00: 65 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74  e-load the SQLit
1d10: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28  e core library (
1d20: 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
1d30: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
1d40: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29  nterop assembly)
1d50: 20 61 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20   and store both 
1d60: 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20  the file name.. 
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d80: 20 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61   //       and na
1d90: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
1da0: 6c 65 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61  le for later usa
1db0: 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge...           
1dc0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1de0: 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20  IGNORED */..    
1df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72                Pr
1e00: 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d  eLoadSQLiteDll(.
1e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e20: 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
1e30: 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41  tory, processorA
1e40: 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
1e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e60: 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e      ref _SQLiteN
1e70: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
1e80: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1e90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1ea0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
1eb0: 75 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  uleHandle);..   
1ec0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1ed0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
1ee0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ef0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
1f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
1f50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f60: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
1f70: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d  d returns the XM
1f80: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
1f90: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
1fa0: 65 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  e assembly..    
1fb0: 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67    /// containing
1fc0: 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73   the managed Sys
1fd0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
1fe0: 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20  components...   
1ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2000: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2010: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2020: 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  / The XML config
2030: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
2040: 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  e -OR- null if i
2050: 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
2060: 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f  rmined..      //
2070: 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78  / or does not ex
2080: 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ist...      /// 
2090: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
20a0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
20b0: 20 73 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f   string GetXmlCo
20c0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
20d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20e0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
20f0: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
2100: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b  string fileName;
2110: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2120: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2130: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 64 69  RK..          di
2140: 72 65 63 74 6f 72 79 20 3d 20 41 70 70 44 6f 6d  rectory = AppDom
2150: 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
2160: 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
2170: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  ..          file
2180: 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62  Name = Path.Comb
2190: 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ine(directory, X
21a0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
21b0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21c0: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
21d0: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
21e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
21f0: 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e 64   fileName;..#end
2200: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
2210: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
2220: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
2230: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ();..          f
2240: 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43  ileName = Path.C
2250: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
2260: 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  , XmlConfigFileN
2270: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
2280: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
2290: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
22a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
22b0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  urn fileName;...
22c0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
22d0: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
22e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
22f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
2340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2350: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
2360: 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75  returns the valu
2370: 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
2380: 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e  ed setting, usin
2390: 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20  g the XML..     
23a0: 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
23b0: 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74  on file and/or t
23c0: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
23d0: 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74 68 65  ariables for the
23e0: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
23f0: 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e 64 2f  /// process and/
2400: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  or the current s
2410: 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76 61 69  ystem, when avai
2420: 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  lable...      //
2430: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2440: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2450: 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
2470: 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d  of the setting..
2480: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2490: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
24a0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61  param name="defa
24b0: 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ult">..      ///
24c0: 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
24d0: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
24e0: 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74   setting has not
24f0: 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
2500: 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  itly..      /// 
2510: 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  or cannot be det
2520: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
2530: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2540: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2550: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2560: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
2570: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
2580: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
2590: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
25a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
25b0: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
25c0: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
25d0: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
25e0: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
25f0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
2600: 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66 61 75  mined.  By defau
2610: 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e 63  lt, all referenc
2620: 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a  es to existing..
2630: 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f        /// enviro
2640: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20  nment variables 
2650: 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64 65 64  will be expanded
2660: 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72 65 73   to their corres
2670: 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a  ponding values..
2680: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e        /// within
2690: 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   the value to be
26a0: 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65 73 73   returned unless
26b0: 20 65 69 74 68 65 72 20 74 68 65 20 22 4e 6f 5f   either the "No_
26c0: 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20  Expand" or..    
26d0: 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64    /// "No_Expand
26e0: 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d  _<paramref name=
26f0: 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72  "name" />" envir
2700: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
2710: 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20  is set [to..    
2720: 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e    /// anything].
2730: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
2740: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
2750: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
2760: 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56  ring GetSettingV
2770: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
2780: 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20   string name,   
2790: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
27a0: 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
27b0: 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ault /* in */.. 
27c0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
27e0: 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
27f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2800: 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
2810: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2870: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
2880: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
2890: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
28a0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
28b0: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
28c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28d0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28e0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64      // NOTE: Upd
28f0: 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 66  ate statistics f
2900: 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  or this setting 
2910: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
2920: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2930: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74          if (sett
2940: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21 3d  ingReadCounts !=
2950: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2960: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2970: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
2980: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
2990: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
29a0: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
29b0: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
29c0: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
29d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e0: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
29f0: 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20  dCounts[name] = 
2a00: 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20  count + 1;..    
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
2a20: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2a30: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
2a40: 67 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28  gReadCounts.Add(
2a50: 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20  name, 1);..     
2a60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2a70: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2a80: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
2a90: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2aa0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2af0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
2b00: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  ue = null;....#i
2b10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2b20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b30: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70          bool exp
2b40: 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  and = true;.... 
2b50: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
2b60: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
2b70: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
2b80: 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20  "No_Expand") != 
2b90: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2ba0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2bb0: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
2bc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
2bd0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
2be0: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
2bf0: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
2c00: 69 61 62 6c 65 28 53 74 72 69 6e 67 2e 46 6f 72  iable(String.For
2c10: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2c20: 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61          "No_Expa
2c30: 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20  nd_{0}", name)) 
2c40: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c60: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
2c70: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
2c80: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76  }....          v
2c90: 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
2ca0: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
2cb0: 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b  tVariable(name);
2cc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
2cd0: 20 28 65 78 70 61 6e 64 20 26 26 20 21 53 74 72   (expand && !Str
2ce0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
2cf0: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
2d00: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
2d10: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70   Environment.Exp
2d20: 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  andEnvironmentVa
2d30: 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d  riables(value);.
2d40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
2d50: 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2d70: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65  eturn value;..#e
2d80: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2d90: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2da0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2db0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
2dc0: 65 20 3d 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67  e = GetXmlConfig
2dd0: 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20  FileName();.... 
2de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2df0: 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c  (fileName == nul
2e00: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2e10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
2e20: 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  fault;....      
2e30: 20 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d          XmlDocum
2e40: 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e  ent document = n
2e50: 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29  ew XmlDocument()
2e60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e70: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64     document.Load
2e80: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
2e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
2ea0: 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20  Element element 
2eb0: 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63  = document.Selec
2ec0: 74 53 69 6e 67 6c 65 4e 6f 64 65 28 53 74 72 69  tSingleNode(Stri
2ed0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
2ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f                "/
2ef0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70  configuration/ap
2f00: 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b  pSettings/add[@k
2f10: 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65  ey='{0}']", name
2f20: 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  )) as..         
2f30: 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d           XmlElem
2f40: 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ent;....        
2f50: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
2f60: 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t != null)..    
2f70: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2f90: 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74  f (element.HasAt
2fa0: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
2fb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2fc0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
2fd0: 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72   element.GetAttr
2fe0: 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d  ibute("value");.
2ff0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
3000: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3010: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
3020: 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 20       if (expand 
3030: 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  && !String.IsNul
3040: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
3050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3060: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
3070: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
3080: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
3090: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
30a0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
30b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
30c0: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
30f0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
3100: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3110: 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
3120: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
3130: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
3140: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
3150: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
3160: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
3170: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
3180: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
3190: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
31a0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
31b0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
31c0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
31d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31e0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
31f0: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
3200: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3220: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
3230: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
3240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3250: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
3260: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
3270: 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74  ailed to get set
3280: 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20  ting " +..      
3290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a0: 22 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20  "\"{0}\" value: 
32b0: 7b 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b  {1}", name, e));
32c0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
32f0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
3300: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3310: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
3320: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
3330: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
3340: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3350: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3360: 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20  @default;..     
3370: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
33d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
33e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70  AMEWORK..      p
33f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
3400: 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e  ring ListToStrin
3410: 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20  g(IList<string> 
3420: 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  list)..      {..
3430: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69            if (li
3440: 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  st == null)..   
3450: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3460: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
3470: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
3480: 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  er result = new 
3490: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b  StringBuilder();
34a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f  ....          fo
34b0: 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c  reach (string el
34c0: 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a  ement in list)..
34d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
34f0: 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d  lement == null).
3500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3510: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
3520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3530: 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20   (result.Length 
3540: 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
3550: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
3560: 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20  ppend(' ');.... 
3570: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3580: 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65  ult.Append(eleme
3590: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
35a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
35b0: 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53  eturn result.ToS
35c0: 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
35d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72  ////....      pr
3630: 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
3640: 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65   CheckForArchite
3650: 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72  cturesAndPlatfor
3660: 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ms(..          s
3670: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c  tring directory,
3680: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
3690: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
36a0: 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ches..          
36b0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
36c0: 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74        int result
36d0: 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
36e0: 20 20 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d     if (matches =
36f0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3700: 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d         matches =
3710: 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67   new List<string
3720: 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  >();....        
3730: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
3740: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
3750: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3760: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
3770: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
3780: 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20  rectory) &&..   
3790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
37a0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
37b0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21  cturePlatforms !
37c0: 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
37d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
37f0: 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61  each (KeyValuePa
3800: 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ir<string, strin
3810: 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20  g> pair..       
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3830: 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f       in processo
3840: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
3850: 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20  tforms)..       
3860: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3880: 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72      if (Director
3890: 79 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f  y.Exists(Path.Co
38a0: 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c  mbine(directory,
38b0: 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20   pair.Key)))..  
38c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
38e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38f0: 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69   matches.Add(pai
3900: 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20  r.Key);..       
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3920: 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20     result++;..  
3930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3960: 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61  tring value = pa
3970: 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ir.Value;....   
3980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3990: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
39a0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39c0: 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20   continue;....  
39d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39e0: 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72      if (Director
39f0: 79 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f  y.Exists(Path.Co
3a00: 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c  mbine(directory,
3a10: 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20   value)))..     
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
3a50: 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29  tches.Add(value)
3a60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3a80: 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ult++;..        
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
3aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ab0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3ac0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3ad0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3ae0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
3af0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3b00: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3b50: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
3b60: 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73  ic bool CheckAss
3b70: 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a  emblyCodeBase(..
3b80: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
3b90: 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20  ly assembly,..  
3ba0: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
3bb0: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
3bc0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
3bd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
3be0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3c00: 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  (assembly == nul
3c10: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3c20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
3c30: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
3c40: 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65       string code
3c50: 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Base = assembly.
3c60: 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20  CodeBase;....   
3c70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
3c80: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
3c90: 70 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a  pty(codeBase))..
3ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cb0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
3cc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3cd0: 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55   Uri uri = new U
3ce0: 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20  ri(codeBase);.. 
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
3d00: 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  ing localFileNam
3d10: 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74  e = uri.LocalPat
3d20: 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
3d30: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
3d40: 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61  ists(localFileNa
3d50: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
3d60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
3d70: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
3d80: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
3d90: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
3da0: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3dc0: 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d      localFileNam
3dd0: 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
3de0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3df0: 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69   string xmlConfi
3e00: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68  gFileName = Path
3e10: 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20  .Combine(..     
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
3e30: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
3e40: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
3e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3e60: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c  (File.Exists(xml
3e70: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
3e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e90: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
3ea0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
3eb0: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
3ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3ee0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
3f00: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
3f10: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
3f40: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
3f50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
3f70: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
3f80: 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 58  e-loader found X
3f90: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
3fa0: 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fc0: 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62       "via code b
3fd0: 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c  ase for currentl
3fe0: 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
3ff0: 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d  mbly: \"{0}\"",.
4000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4010: 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43 6f             xmlCo
4020: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20  nfigFileName)); 
4030: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4060: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4090: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
40a0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
40b0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
40c0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
40d0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
40e0: 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
40f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4100: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
4110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4120: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
4130: 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20     List<string> 
4140: 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d  matches = null;.
4150: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4160: 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72 63   if (CheckForArc
4170: 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
4180: 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72 79  tforms(directory
4190: 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29 20 3e  , ref matches) >
41a0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
41b0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
41c0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
41d0: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
41e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41f0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
4200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4220: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4230: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
4240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4250: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
4260: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
4270: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
4280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4290: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
42a0: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e   pre-loader foun
42b0: 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72  d native sub-dir
42c0: 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20  ectories " +..  
42d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42e0: 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64          "via cod
42f0: 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65  e base for curre
4300: 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
4310: 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22  ssembly: \"{0}\"
4320: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69                Li
4340: 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68  stToString(match
4350: 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  es))); /* throw 
4360: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
4370: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4380: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
4390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
43a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
43b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
43c0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
43e0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
43f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
4400: 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69  leName = localFi
4410: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
4420: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4430: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
4440: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
4450: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4460: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
4470: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
4480: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
4490: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
44a0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
44b0: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
44c0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
44d0: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
44e0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
44f0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
4500: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
4510: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
4520: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
4530: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
4550: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
4560: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
4570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4580: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
4590: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
45a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
45b0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
45c0: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
45d0: 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63  r failed to chec
45e0: 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d  k code base " +.
45f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4600: 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
4610: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
4620: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
4630: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
4640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4650: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
4660: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
4670: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
4690: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
46a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
46b0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
46c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
46d0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
46e0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
46f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4740: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
4750: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
4760: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
4770: 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  ns the directory
4780: 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
4790: 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e  y currently bein
47a0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65  g..      /// exe
47b0: 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  cuted...      //
47c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
47d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
47e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
47f0: 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
4800: 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
4810: 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63  ently being exec
4820: 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  uted -OR- null i
4830: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  f..      /// it 
4840: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
4850: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
4860: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4870: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
4880: 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65  c string GetAsse
4890: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d  mblyDirectory().
48a0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
48b0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
48c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
48d0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
48e0: 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
48f0: 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
4900: 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
4910: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
4920: 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
4930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4940: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
4950: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4960: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
4970: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20   = null;....#if 
4980: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
4990: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
49a0: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
49b0: 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61  yName assemblyNa
49c0: 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65  me = assembly.Ge
49d0: 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tName();....    
49e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
49f0: 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75  semblyName == nu
4a00: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4a10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
4a20: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
4a30: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
4a40: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64  assemblyName.Cod
4a50: 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  eBase;..#else.. 
4a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4a70: 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43  (!CheckAssemblyC
4a80: 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c 79  odeBase(assembly
4a90: 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29 29  , ref fileName))
4aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4ab0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61      fileName = a
4ac0: 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e  ssembly.Location
4ad0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4ae0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
4af0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
4b00: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b20: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
4b30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4b40: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
4b50: 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
4b60: 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
4b70: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
4b80: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
4b90: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
4ba0: 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4bc0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
4bd0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4be0: 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  n directory;..  
4bf0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
4c00: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
4c10: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
4c20: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
4c30: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
4c40: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
4c50: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
4c60: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
4c70: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
4c80: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
4c90: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
4ca0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4cc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4cd0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
4ce0: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
4cf0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
4d00: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
4d10: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
4d20: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
4d30: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
4d40: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
4d50: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
4d60: 20 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22   get directory "
4d70: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
4d80: 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63            "for c
4d90: 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
4da0: 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d  ng assembly: {0}
4db0: 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
4dc0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
4dd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4de0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
4df0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4e10: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
4e30: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
4e40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4e50: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
4e60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
4e70: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
4e80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4ed0: 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69      #region Opti
4ee0: 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69  onal Native SQLi
4ef0: 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
4f00: 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
4f10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20     //..      // 
4f20: 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20  NOTE: If we are 
4f30: 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20  looking for the 
4f40: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
4f50: 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c  DLL ("sqlite3.dl
4f60: 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20  l"),..      //  
4f70: 20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70       the interop
4f80: 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e   DLL ("SQLite.In
4f90: 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20  terop.dll"), or 
4fa0: 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
4fb0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
4fc0: 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61        .NET Compa
4fd0: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65  ct Framework, we
4fe0: 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20   should include 
4ff0: 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20  this code (only 
5000: 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  if the..      //
5010: 20 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68         feature h
5020: 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e  as actually been
5030: 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73   enabled).  This
5040: 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74   code would be t
5050: 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  otally..      //
5060: 20 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74         redundant
5070: 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20   if this module 
5080: 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64  has been bundled
5090: 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d   into the mixed-
50a0: 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  mode..      //  
50b0: 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a       assembly...
50c0: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51        //..#if SQ
50d0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
50e0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
50f0: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
5100: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d  PACTFRAMEWORK...
5110: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
5120: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63   // NOTE: Only c
5130: 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61  ompile in the na
5140: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
5150: 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68  -load code if th
5160: 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20  e feature..     
5170: 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65   //       has be
5180: 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74  en enabled for t
5190: 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20  his build...    
51a0: 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41    //..#if PRELOA
51b0: 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
51c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
51d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
51e0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
51f0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
5200: 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67  iable containing
5210: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
5220: 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
5230: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
5240: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
5250: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5260: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5270: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
5280: 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45  nly string PROCE
5290: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
52a0: 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  E =..          "
52b0: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
52c0: 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20  ECTURE";....    
52d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5320: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5330: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
5340: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
5350: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
5360: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
5370: 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d  n32 LoadLibrary.
5380: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
5390: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
53a0: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
53b0: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
53c0: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
53d0: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
53e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
53f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
5400: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
5410: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
5420: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
5430: 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62  e executable lib
5440: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
5450: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5460: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5470: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5480: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
5490: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
54a0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
54b0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
54c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
54d0: 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  s>..#if !PLATFOR
54e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
54f0: 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  RK..      [DllIm
5500: 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c  port("kernel32",
5510: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
5520: 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64  DllImport("cored
5530: 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ll",..#endif..  
5540: 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43          CallingC
5550: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5560: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
5570: 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20  napi, CharSet = 
5580: 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23  CharSet.Auto,..#
5590: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
55a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
55b0: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
55c0: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
55d0: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
55e0: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
55f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
5600: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
5610: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 70   true)]..      p
5620: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78  rivate static ex
5630: 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64  tern IntPtr Load
5640: 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20 66  Library(string f
5650: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
5660: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
56b0: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
56c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
56d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
56e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
56f0: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
5700: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
5710: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
5720: 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49  Win32 GetSystemI
5730: 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  nfo..      /// f
5740: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
5750: 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
5760: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
5770: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
5780: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
5790: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
57a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
57b0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
57c0: 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20  systemInfo">..  
57d0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74      /// The syst
57e0: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
57f0: 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20 66  tructure to be f
5800: 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20  illed in by the 
5810: 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
5820: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
5830: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
5840: 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69  "coredll", Calli
5850: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
5860: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5870: 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20  .Winapi)]..     
5880: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
5890: 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53  extern void GetS
58a0: 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59  ystemInfo(out SY
58b0: 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d  STEM_INFO system
58c0: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
5920: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5930: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65        /// This e
5940: 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61  numeration conta
5950: 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65  ins the possible
5960: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
5970: 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
5980: 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72   /// architectur
5990: 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73  e field of the s
59a0: 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
59b0: 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  n structure...  
59c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
59d0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
59e0: 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72  e enum Processor
59f0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75  Architecture : u
5a00: 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a  short /* COMPAT:
5a10: 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20   Win32. */..    
5a20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
5a30: 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20  ntel = 0,..     
5a40: 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a       MIPS = 1,..
5a50: 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20            Alpha 
5a60: 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2,..          
5a70: 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20  PowerPC = 3,..  
5a80: 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c          SHx = 4,
5a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20  ..          ARM 
5aa0: 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 5,..          
5ab0: 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20  IA64 = 6,..     
5ac0: 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37       Alpha64 = 7
5ad0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49  ,..          MSI
5ae0: 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20  L = 8,..        
5af0: 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20    AMD64 = 9,..  
5b00: 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f          IA32_on_
5b10: 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20  Win64 = 10,..   
5b20: 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d         Unknown =
5b30: 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d   0xFFFF..      }
5b40: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b90: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5bb0: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
5bc0: 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f  re contains info
5bd0: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
5be0: 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74  e current comput
5bf0: 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  er. This..      
5c00: 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65  /// includes the
5c10: 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c   processor type,
5c20: 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f   page size, memo
5c30: 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74  ry addresses, et
5c40: 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  c...      /// </
5c50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5c60: 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
5c70: 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
5c80: 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72 69  ial)]..      pri
5c90: 76 61 74 65 20 73 74 72 75 63 74 20 53 59 53 54  vate struct SYST
5ca0: 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b  EM_INFO..      {
5cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5cc0: 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68  ic ProcessorArch
5cd0: 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73  itecture wProces
5ce0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
5cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5d00: 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72  ic ushort wReser
5d10: 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ved; /* NOT USED
5d20: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
5d30: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67  ublic uint dwPag
5d40: 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53  eSize; /* NOT US
5d50: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
5d60: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c   public IntPtr l
5d70: 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74  pMinimumApplicat
5d80: 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e  ionAddress; /* N
5d90: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
5da0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
5db0: 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70  Ptr lpMaximumApp
5dc0: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
5dd0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
5de0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
5df0: 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50  c uint dwActiveP
5e00: 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a  rocessorMask; /*
5e10: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5e20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
5e30: 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72  int dwNumberOfPr
5e40: 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54  ocessors; /* NOT
5e50: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
5e60: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
5e70: 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b  dwProcessorType;
5e80: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
5e90: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
5ea0: 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74  c uint dwAllocat
5eb0: 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20  ionGranularity; 
5ec0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5ed0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5ee0: 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73   ushort wProcess
5ef0: 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20  orLevel; /* NOT 
5f00: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
5f10: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
5f20: 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73   wProcessorRevis
5f30: 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ion; /* NOT USED
5f40: 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65   */..      }..#e
5f50: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
5f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fa0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
5fb0: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
5fc0: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f   Data..      ///
5fd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5fe0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
5ff0: 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d   module file nam
6000: 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
6010: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
6020: 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  or null...      
6030: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6040: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
6050: 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c  atic string _SQL
6060: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
6070: 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
6080: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60d0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
60e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
60f0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6100: 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20  dule handle for 
6110: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
6120: 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65  e library or the
6130: 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f   value..      //
6140: 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a  / IntPtr.Zero...
6150: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6160: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
6170: 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74  ate static IntPt
6180: 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  r _SQLiteNativeM
6190: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e  oduleHandle = In
61a0: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
61b0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
61c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6210: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6220: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6230: 53 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65  Searches for the
6240: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
6250: 69 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69  ibrary in the di
6260: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
6270: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
6280: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
6290: 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
62a0: 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ted as well as t
62b0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
62c0: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72  y..      /// for
62d0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
62e0: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
62f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
6300: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6310: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
6320: 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
6330: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
6340: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
6350: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
6360: 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
6370: 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20   to the base..  
6380: 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
6390: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
63a0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
63b0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
63c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
63d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
63e0: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
63f0: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
6400: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
6410: 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
6420: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
6430: 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
6440: 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20   the name..     
6450: 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65   /// of the imme
6460: 64 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20  diate directory 
6470: 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74  (i.e. the offset
6480: 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64   from the base d
6490: 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20  irectory)..     
64a0: 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20   /// containing 
64b0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
64c0: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
64d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
64e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
64f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
6500: 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73  on-zero (success
6510: 29 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  ) if the native 
6520: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
6530: 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77  as found; otherw
6540: 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ise,..      /// 
6550: 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d  zero (failure)..
6560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
6570: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
6580: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
6590: 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
65a0: 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
65b0: 72 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44  ref string baseD
65c0: 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20  irectory,       
65d0: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
65e0: 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
65f0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6600: 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f  ecture /* out */
6610: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
6620: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6630: 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
6640: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
6650: 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
6660: 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46  SQLite_NoSearchF
6670: 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  orDirectory", nu
6680: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
6690: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
66a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
66b0: 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c  false; /* DISABL
66c0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
66d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
66e0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
66f0: 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
6700: 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69   list of base di
6710: 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72  rectories and pr
6720: 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d  ocessor/platform
6730: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6740: 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65       names.  The
6750: 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65  se lists will be
6760: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f   used to help lo
6770: 63 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d  cate the native.
6780: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
6790: 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20      SQLite core 
67a0: 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65  library (or inte
67b0: 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f  rop assembly) to
67c0: 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a   pre-load into..
67d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
67e0: 20 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e     this process.
67f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
6800: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
6810: 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d  [] directories =
6820: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6830: 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72    GetAssemblyDir
6840: 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21  ectory(),..#if !
6850: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6860: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
6870: 20 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61           AppDoma
6880: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
6890: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  .BaseDirectory,.
68a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
68b0: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
68c0: 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44     string[] subD
68d0: 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a  irectories = {..
68e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
68f0: 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
6900: 65 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61  ecture(), GetPla
6910: 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d  tformName(null).
6920: 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d  .          };...
6930: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
6940: 63 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63  ch (string direc
6950: 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72  tory in director
6960: 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
6970: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6980: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d   if (directory =
6990: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
69a0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
69b0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
69c0: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
69d0: 74 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f  tring subDirecto
69e0: 72 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f  ry in subDirecto
69f0: 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ries)..         
6a00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6a10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75            if (su
6a20: 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  bDirectory == nu
6a30: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6a40: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
6a50: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
6a60: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
6a70: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
6a80: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74  pDllFileName(Pat
6a90: 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20  h.Combine(..    
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ab0: 20 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64    Path.Combine(d
6ac0: 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69 72  irectory, subDir
6ad0: 65 63 74 6f 72 79 29 2c 20 53 51 4c 49 54 45 5f  ectory), SQLITE_
6ae0: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
6af0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
6b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b10: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
6b20: 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c  e SQLite DLL fil
6b30: 65 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e  e exists, return
6b40: 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6b60: 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72        Prior to r
6b70: 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68  eturning, set th
6b80: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
6b90: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
6ba0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
6bb0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
6bc0: 74 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65  tecture to refle
6bd0: 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d  ct the location.
6be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6bf0: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72     //       wher
6c00: 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d  e it was found..
6c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6c20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
6c30: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
6c40: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
6c50: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
6c60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c80: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
6c90: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6cb0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
6cc0: 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69 72  tecture = subDir
6cd0: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6cf0: 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46  eturn true; /* F
6d00: 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  OUND */..       
6d10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6d20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
6d30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
6d40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
6d50: 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55  alse; /* NOT FOU
6d60: 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  ND */..      }..
6d70: 0d 0a 20 20 20 20 20 20 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 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dc0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
6dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6de0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
6df0: 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 64  turns the base d
6e00: 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20  irectory of the 
6e10: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
6e20: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ion..      /// d
6e30: 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  omain...      //
6e40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
6e60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6e70: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
6e80: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
6e90: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
6ea0: 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  in -OR- null if 
6eb0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  it..      /// ca
6ec0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
6ed0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
6ee0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
6ef0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
6f00: 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44 69  string GetBaseDi
6f10: 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
6f20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
6f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
6f40: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
6f50: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
6f60: 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
6f70: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a  nment variable..
6f80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6f90: 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20 69     is set, use i
6fa0: 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74  t verbatim for t
6fb0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
6fc0: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
6fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6fe0: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47  ng directory = G
6ff0: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22  etSettingValue("
7000: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
7010: 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20  seDirectory",.. 
7020: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c               nul
7030: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
7040: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21   if (directory !
7050: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
7060: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
7070: 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20  rectory;....#if 
7080: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7090: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
70a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
70b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
70c0: 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
70d0: 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69  te_UseAssemblyDi
70e0: 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e  rectory" environ
70f0: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
7100: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
7110: 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79  e is set (to any
7120: 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74 74  thing), then att
7130: 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 0d  empt to use the.
7140: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7150: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63 6f      directory co
7160: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72  ntaining the cur
7170: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
7180: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
7190: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
71a0: 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  .e. System.Data.
71b0: 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64 20  SQLite) intsead 
71c0: 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  of the applicati
71d0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  on..          //
71e0: 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62 61         domain ba
71f0: 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
7200: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7210: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
7220: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7240: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73  PreLoadSQLite_Us
7250: 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  eAssemblyDirecto
7260: 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  ry", null) != nu
7270: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
7280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7290: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
72a0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
72b0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
72c0: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
72d0: 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
72e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
72f0: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
7300: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
7310: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
7320: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
7330: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
7340: 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
7350: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
7360: 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y of the..      
7370: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72      //       cur
7380: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
7390: 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
73a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
73b0: 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61    return AppDoma
73c0: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
73d0: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d  .BaseDirectory;.
73e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
73f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7400: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
7410: 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
7420: 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63 74  using the direct
7430: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ory containing..
7440: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7450: 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79     the currently
7460: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
7470: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  bly...          
7480: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
7490: 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79  turn GetAssembly
74a0: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65  Directory();..#e
74b0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
74c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
74d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7510: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7520: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7530: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
7540: 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
7550: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
7560: 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66  e requires a suf
7570: 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  fix..      /// a
7580: 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65  nd adds it if ne
7590: 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
75a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
75b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
75c0: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
75d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
75e0: 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69   original dynami
75f0: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
7600: 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70  ile name to insp
7610: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
7620: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
7630: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
7640: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e       /// The dyn
7650: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
7660: 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73  y file name, pos
7670: 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74  sibly modified t
7680: 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20  o include an..  
7690: 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f      /// extensio
76a0: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
76b0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
76c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
76d0: 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69  tring FixUpDllFi
76e0: 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  leName(..       
76f0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
7700: 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  me /* in */..   
7710: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
7720: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
7730: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
7740: 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
7750: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
7760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c                Pl
7770: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
7780: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
7790: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
77a0: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
77b0: 20 20 20 20 20 20 20 69 66 20 28 28 70 6c 61 74         if ((plat
77c0: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
77d0: 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d  rmID.Win32S) ||.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77f0: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
7800: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
7810: 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20  32Windows) ||.. 
7820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7830: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
7840: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
7850: 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  NT) ||..        
7860: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
7870: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
7880: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
7890: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78b0: 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e  if (!fileName.En
78c0: 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78  dsWith(DllFileEx
78d0: 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  tension,..      
78e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78f0: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
7900: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
7910: 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
7920: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7940: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
7950: 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78  Name + DllFileEx
7960: 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  tension;..      
7970: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7990: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
79a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
79b0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
79c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a10: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
7a20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7a30: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
7a40: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72  d returns the pr
7a50: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
7a60: 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
7a70: 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  ent..      /// p
7a80: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
7a90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7aa0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
7ab0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
7ac0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
7ad0: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
7ae0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
7af0: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
7b00: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
7b10: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
7b20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
7b30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
7b40: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
7b50: 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72  ing GetProcessor
7b60: 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a  Architecture()..
7b70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7b80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7b90: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
7ba0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
7bb0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
7bc0: 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65  cture" environme
7bd0: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  nt..          //
7be0: 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20         variable 
7bf0: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
7c00: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
7c10: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f  current processo
7c20: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  r..          // 
7c30: 20 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75        architectu
7c40: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  re...          /
7c50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
7c60: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
7c70: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
7c80: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
7c90: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
7ca0: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
7cb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
7cc0: 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  ", null);....   
7cd0: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
7ce0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
7cf0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
7d00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7d10: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
7d20: 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  cture;....      
7d30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7d40: 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c    // BUGBUG: Wil
7d50: 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62 65  l this always be
7d60: 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20   reliable?..    
7d70: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7d80: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
7d90: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
7da0: 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52 4f 43  ettingValue(PROC
7db0: 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
7dc0: 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  RE, null);....  
7dd0: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7e20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7e30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7e40: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
7e50: 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b           // HACK
7e60: 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 20 22  : Check for an "
7e70: 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69 74 75  impossible" situ
7e80: 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 70  ation.  If the p
7e90: 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20 20  ointer size..   
7ea0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7eb0: 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68 65 20  is 32-bits, the 
7ec0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
7ed0: 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20 62 65  ecture cannot be
7ee0: 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20   "AMD64"...     
7ef0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 6e       //       In
7f00: 20 74 68 61 74 20 63 61 73 65 2c 20 77 65 20 61   that case, we a
7f10: 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69  re almost certai
7f20: 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20 62 75  nly hitting a bu
7f30: 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g in the..      
7f40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65      //       ope
7f50: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 6e  rating system an
7f60: 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74 75 64  d/or Visual Stud
7f70: 69 6f 20 74 68 61 74 20 63 61 75 73 65 73 20 74  io that causes t
7f80: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
7f90: 20 20 20 20 20 20 20 50 52 4f 43 45 53 53 4f 52         PROCESSOR
7fa0: 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 65 6e  _ARCHITECTURE en
7fb0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
7fc0: 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  le to contain th
7fd0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
7fe0: 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61 6c 75        wrong valu
7ff0: 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d  e in some circum
8000: 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61 73 65  stances.  Please
8010: 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b 65 74   refer to ticket
8020: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
8030: 20 20 20 20 20 5b 39 61 63 39 38 36 32 36 31 31       [9ac9862611
8040: 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e  ] for further in
8050: 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
8060: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8070: 20 20 20 20 69 66 20 28 28 49 6e 74 50 74 72 2e      if ((IntPtr.
8080: 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69  Size == sizeof(i
8090: 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20  nt)) &&..       
80a0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45 71         String.Eq
80b0: 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72 41 72  uals(processorAr
80c0: 63 68 69 74 65 63 74 75 72 65 2c 20 22 41 4d 44  chitecture, "AMD
80d0: 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  64",..          
80e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
80f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
8100: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
8110: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8120: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8130: 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
8140: 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
8150: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8160: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e     // NOTE: When
8170: 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61 62   tracing is enab
8180: 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f 72  led, save the or
8190: 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74 65  iginally detecte
81a0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
81b0: 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
81c0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
81d0: 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67   before changing
81e0: 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
81f0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8200: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 61 76        string sav
8210: 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  edProcessorArchi
8220: 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65 73  tecture = proces
8230: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
8240: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
8250: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8260: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8270: 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61  OTE: We know tha
8280: 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
8290: 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ems that return 
82a0: 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20 20  "AMD64" as..    
82b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
82c0: 20 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72     the processor
82d0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 61 72   architecture ar
82e0: 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75 70  e actually a sup
82f0: 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20 20  erset of..      
8300: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8310: 20 74 68 65 20 22 78 38 36 22 20 70 72 6f 63 65   the "x86" proce
8320: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
8330: 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72 65  e; therefore, re
8340: 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  turn..          
8350: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78 38      //       "x8
8360: 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69 6e  6" when the poin
8370: 74 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d 62  ter size is 32-b
8380: 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  its...          
8390: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
83a0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
83b0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 22 78  rchitecture = "x
83c0: 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  86";....#if !NET
83d0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
83e0: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
83f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
8400: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
8410: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8420: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8430: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8440: 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77  OTE: Show that w
8450: 65 20 68 69 74 20 61 20 66 61 69 72 6c 79 20 75  e hit a fairly u
8460: 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e  nusual situation
8470: 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20   (i.e...        
8480: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8490: 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22 20 70     the "wrong" p
84a0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
84b0: 63 74 75 72 65 20 77 61 73 20 64 65 74 65 63 74  cture was detect
84c0: 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ed)...          
84d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
84f0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
8500: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
8510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8520: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
8530: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
8540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8550: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
8560: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
8570: 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62  r detected {0}-b
8580: 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a  it pointer " +..
8590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85a0: 20 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68        "size with
85b0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
85c0: 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c  tecture \"{1}\",
85d0: 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20   using " +..    
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85f0: 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63    "processor arc
8600: 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c  hitecture \"{2}\
8610: 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a  " instead...",..
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8630: 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a        IntPtr.Siz
8640: 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f  e * 8 /* bits */
8650: 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72  , savedProcessor
8660: 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20  Architecture,.. 
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
8690: 63 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a  chitecture)); /*
86a0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
86b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
86c0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
86d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
86e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
86f0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
8700: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
8710: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
8720: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d         }..#else.
8730: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
8740: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8750: 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
8760: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8770: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8780: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8790: 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54  OTE: On the .NET
87a0: 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
87b0: 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75  rk, attempt to u
87c0: 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  se the native.. 
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
87e0: 20 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20        Win32 API 
87f0: 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f  function (via P/
8800: 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e  Invoke) that can
8810: 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20   provide us..   
8820: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
8830: 20 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f      with the pro
8840: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
8850: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
8860: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8870: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8880: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
88a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
88b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
88c0: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
88d0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
88e0: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20  ction will be.. 
88f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8900: 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64   //       placed
8910: 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65   here.  Only the
8920: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8930: 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20  tecture field.. 
8940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8950: 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65   //       is use
8960: 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64  d by this method
8970: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8980: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8990: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45             SYSTE
89a0: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
89b0: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
89c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
89e0: 20 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65   NOTE: Query the
89f0: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
8a00: 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65  ion via P/Invoke
8a10: 2c 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20  , thus..        
8a20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8a30: 20 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73     filling the s
8a40: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
8a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8a70: 20 20 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f     GetSystemInfo
8a80: 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f 29  (out systemInfo)
8a90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8aa0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8ac0: 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68 65  NOTE: Return the
8ad0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8ae0: 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61 73  tecture value as
8af0: 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20   a string...    
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8b10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8b20: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
8b30: 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20 20  hitecture =..   
8b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b50: 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50     systemInfo.wP
8b60: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8b70: 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ture.ToString();
8b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8b90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8ba0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
8bb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8bc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
8bd0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
8be0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8bf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8c10: 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c   NOTE: Upon fail
8c20: 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20 65  ure, return an e
8c30: 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54 68  mpty string.  Th
8c40: 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d  is will prevent.
8c50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
8c60: 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c 6c  /       the call
8c70: 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20  ing method from 
8c80: 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69 73  considering this
8c90: 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a   method call a..
8ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8cb0: 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65 22         "failure"
8cc0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8cd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8ce0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
8cf0: 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69 6e  itecture = Strin
8d00: 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20  g.Empty;..      
8d10: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
8d20: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
8d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
8d80: 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72  turn processorAr
8d90: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20  chitecture;..   
8da0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8df0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8e00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8e10: 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68      /// Given th
8e20: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
8e30: 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e  itecture, return
8e40: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
8e50: 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20  e platform...   
8e60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8e70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
8e80: 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
8e90: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
8ea0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
8eb0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8ec0: 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72  tecture to be tr
8ed0: 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c  anslated to a pl
8ee0: 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
8ef0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8f00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
8f10: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
8f20: 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   The platform na
8f30: 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  me for the speci
8f40: 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  fied processor a
8f50: 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d  rchitecture -OR-
8f60: 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   null..      ///
8f70: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
8f80: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
8f90: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
8fa0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
8fb0: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
8fc0: 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
8fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
8fe0: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
8ff0: 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a  itecture /* in *
9000: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
9010: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9020: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
9030: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
9040: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9050: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
9060: 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
9070: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
9080: 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  cture();....    
9090: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
90a0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70  .IsNullOrEmpty(p
90b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
90c0: 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20  ture))..        
90d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
90e0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
90f0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
9100: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
9110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9120: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
9130: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
9140: 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  orms == null).. 
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
9170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
9180: 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
9190: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
91a0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
91b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
91c0: 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61  atforms.TryGetVa
91d0: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
91f0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
9200: 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e  e, out platformN
9210: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
9220: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9230: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9240: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
9250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9260: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
9270: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9280: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
9290: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92e0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
92f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9300: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
9310: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  oad the native S
9320: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62 61  QLite library ba
9330: 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69  sed on the speci
9340: 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fied..      /// 
9350: 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72  directory and pr
9360: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
9370: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ture...      ///
9380: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9390: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
93a0: 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72  me="baseDirector
93b0: 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  y">..      /// T
93c0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
93d0: 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66  y to use, null f
93e0: 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20  or default (the 
93f0: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
9400: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  f..      /// the
9410: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
9420: 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54  tion domain).  T
9430: 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68  his directory sh
9440: 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65  ould contain the
9450: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
9460: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
9470: 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d  re specific sub-
9480: 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20  directories...  
9490: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
94a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
94b0: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
94c0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
94d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
94e0: 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73  requested proces
94f0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
9500: 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75  , null for defau
9510: 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f  lt (the..      /
9520: 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
9530: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
9540: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
9550: 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20  ).  This caller 
9560: 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f  should..      //
9570: 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20  / almost always 
9580: 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72  specify null for
9590: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e   this parameter.
95a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
95b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
95c0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
95d0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
95e0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
95f0: 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61 74  he candidate nat
9600: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
9610: 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c  name to load wil
9620: 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72 65  l be stored here
9630: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  ,..      /// if 
9640: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
9650: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9660: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
9670: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
9680: 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20  uleHandle">..   
9690: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
96a0: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
96b0: 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 4c  as returned by L
96c0: 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c 20  oadLibrary will 
96d0: 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20 20  be stored..     
96e0: 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e 65   /// here, if ne
96f0: 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20 76  cessary.  This v
9700: 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e 74  alue will be Int
9710: 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65 20  Ptr.Zero if the 
9720: 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f  call to..      /
9730: 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 66  // LoadLibrary f
9740: 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ails...      ///
9750: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
9760: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9770: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
9780: 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ro if the native
9790: 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61 64   module was load
97a0: 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 3b  ed successfully;
97b0: 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   otherwise,..   
97c0: 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20     /// zero...  
97d0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
97e0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
97f0: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72  e static bool Pr
9800: 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d  eLoadSQLiteDll(.
9810: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9820: 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  g baseDirectory,
9830: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
9840: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
9850: 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
9860: 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20 20  Architecture,   
9870: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
9880: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
9890: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
98a0: 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  Name, /* out */.
98b0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49  .          ref I
98c0: 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64 75  ntPtr nativeModu
98d0: 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f  leHandle    /* o
98e0: 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
98f0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
9900: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9910: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
9920: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
9930: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69 73  ase directory is
9940: 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64   null, use the d
9950: 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20 20  efault..        
9960: 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e    //       (i.e.
9970: 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74 6f   attempt to auto
9980: 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74  matically detect
9990: 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20 20   it)...         
99a0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
99b0: 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
99c0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
99d0: 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
99e0: 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65  ectory = GetBase
99f0: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a  Directory();....
9a00: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9a10: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9a20: 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
9a30: 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65 20   query the base 
9a40: 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20  directory, stop 
9a50: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
9a60: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
9a70: 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20   (baseDirectory 
9a80: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
9a90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
9aa0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
9ab0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9ac0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
9ad0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
9ae0: 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
9af0: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
9b00: 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
9b10: 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
9b20: 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
9b30: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9b40: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
9b50: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
9b60: 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69  eName(Path.Combi
9b70: 6e 65 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  ne(baseDirectory
9b80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
9b90: 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a   SQLITE_DLL));..
9ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9bb0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
9bc0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
9bd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
9be0: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
9bf0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
9c00: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
9c10: 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73  pecified process
9c20: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
9c30: 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65  is null, use the
9c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9c50: 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20       default... 
9c60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9c70: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
9c80: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9c90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
9ca0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
9cb0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
9cc0: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
9cd0: 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a  hitecture();....
9ce0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9cf0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9d00: 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
9d10: 20 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65   query the proce
9d20: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9d30: 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  e, stop now...  
9d40: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9d50: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
9d60: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
9d70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
9d80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
9d90: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
9da0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9db0: 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20   // NOTE: Build 
9dc0: 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e  the full path an
9dd0: 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  d file name for 
9de0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
9df0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
9e00: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
9e10: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
9e20: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
9e30: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
9e40: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69  //..          fi
9e50: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
9e60: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
9e70: 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62  ombine(Path.Comb
9e80: 69 6e 65 28 62 61 73 65 44 69 72 65 63 74 6f 72  ine(baseDirector
9e90: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
9ea0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
9eb0: 74 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54 45  tecture), SQLITE
9ec0: 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  _DLL));....     
9ed0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9ee0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
9ef0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73  he file name bas
9f00: 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73  ed on the proces
9f10: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
9f20: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
9f30: 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64   // is not found
9f40: 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20  , try using the 
9f50: 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66  associated platf
9f60: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
9f70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9f80: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
9f90: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
9fa0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9fb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9fd0: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
9fe0: 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
9ff0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
a000: 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20  cture to a..    
a010: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a020: 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65     platform name
a030: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a040: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a050: 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
a060: 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74  rmName = GetPlat
a070: 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73  formName(process
a080: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
a090: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a0a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a0b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
a0c0: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61  we failed to tra
a0d0: 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66  nslate the platf
a0e0: 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e  orm name, stop n
a0f0: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
a100: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a110: 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72       if (platfor
a120: 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  mName == null)..
a130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a140: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a150: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a160: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a170: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
a180: 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20  d the full path 
a190: 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  and file name fo
a1a0: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
a1b0: 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ite..           
a1c0: 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
a1d0: 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c  ary using the pl
a1e0: 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
a210: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
a220: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
a230: 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62  ombine(Path.Comb
a240: 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ine(..          
a250: 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
a260: 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e  ctory, platformN
a270: 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c  ame), SQLITE_DLL
a280: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
a290: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a2a0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
a2b0: 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73  If the file does
a2c0: 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70   not exist, skip
a2d0: 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
a2e0: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
a2f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a300: 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
a310: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
a320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a330: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
a340: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
a350: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
a360: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
a370: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
a380: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
a390: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
a3a0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
a3b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a3c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3e0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78  // NOTE: Show ex
a3f0: 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61  actly where we a
a400: 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  re trying to loa
a410: 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  d the native..  
a420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a430: 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20  //       SQLite 
a440: 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20  library from... 
a450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a460: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a470: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
a480: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
a490: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
a4b0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
a4c0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
a4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4e0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
a4f0: 70 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72  pre-loader is tr
a500: 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74  ying to load nat
a510: 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ive " +..       
a520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
a530: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c  SQLite library \
a540: 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65  "{0}\"...", file
a550: 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  Name)); /* throw
a560: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
a570: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
a580: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
a590: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a5b0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
a5c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
a5d0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
a5e0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a5f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
a600: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61  : Attempt to loa
a610: 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  d the native lib
a620: 72 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c  rary.  This will
a630: 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20   either..       
a640: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a650: 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e  return a valid n
a660: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
a670: 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50  dle, return IntP
a680: 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20  tr.Zero,..      
a690: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a6a0: 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63   or throw an exc
a6b0: 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  eption...       
a6c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a6d0: 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
a6e0: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
a6f0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
a700: 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
a710: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4c 6f  oduleHandle = Lo
a720: 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
a730: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
a740: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61        return (na
a750: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
a760: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
a770: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
a780: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
a790: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
a7a0: 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
a7b0: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
a7c0: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
a7d0: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
a7e0: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
a7f0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
a800: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
a810: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
a820: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
a830: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
a840: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a850: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a870: 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20  // NOTE: First, 
a880: 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69  grab the last Wi
a890: 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72  n32 error number
a8a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a8b0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a8c0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
a8d0: 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68  astError = Marsh
a8e0: 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45  al.GetLastWin32E
a8f0: 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77  rror(); /* throw
a900: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
a910: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a930: 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65  / NOTE: Show whe
a940: 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  re we failed to 
a950: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
a960: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
a970: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a980: 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20     library from 
a990: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57  along with the W
a9a0: 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20  in32 error code 
a9b0: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
a9c0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a9d0: 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d  exception inform
a9e0: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
a9f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa10: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
aa20: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
aa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa40: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
aa50: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
aa60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
aa70: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
aa80: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
aa90: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f  der failed to lo
aaa0: 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20  ad native " +.. 
aab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aac0: 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62       "SQLite lib
aad0: 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65  rary \"{0}\" (ge
aae0: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d  tLastError = {1}
aaf0: 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20  ): {2}",..      
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab10: 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72  fileName, lastEr
ab20: 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  ror, e)); /* thr
ab30: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
ab40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ab50: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
ab60: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ab70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab80: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
aba0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
abb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
abc0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
abd0: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
abe0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
abf0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ac00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ac10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ac50: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
ac60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ac70: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
ac80: 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54  OTE: On the .NET
ac90: 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
aca0: 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20 69  rk, the native i
acb0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
acc0: 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  must..    //    
acd0: 20 20 20 62 65 20 75 73 65 64 20 62 65 63 61 75     be used becau
ace0: 73 65 20 69 74 20 70 72 6f 76 69 64 65 73 20 73  se it provides s
acf0: 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e  everal workaroun
ad00: 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61  ds to .NET Compa
ad10: 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  ct..    //      
ad20: 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74   Framework limit
ad30: 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74  ations important
ad40: 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65 72   for proper oper
ad50: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72  ation of the cor
ad60: 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
ad70: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
ad80: 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  te functionality
ad90: 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c   (e.g. being abl
ada0: 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f  e to bind..    /
adb0: 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65 74 65  /       paramete
adc0: 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f  rs and handle co
add0: 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20 74  lumn values of t
ade0: 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20 44  ypes Int64 and D
adf0: 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d  ouble)...    //.
ae00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
ae10: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
ae20: 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e  E_DLL = "SQLite.
ae30: 49 6e 74 65 72 6f 70 2e 30 39 37 2e 64 6c 6c 22  Interop.097.dll"
ae40: 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f  ;..#elif SQLITE_
ae50: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f  STANDARD..    //
ae60: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f  ..    // NOTE: O
ae70: 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65  therwise, if the
ae80: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
ae90: 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61 62   library is enab
aea0: 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20  led, use it...  
aeb0: 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
aec0: 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
aed0: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71  SQLITE_DLL = "sq
aee0: 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55  lite3";..#elif U
aef0: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a  SE_INTEROP_DLL..
af00: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f        //..    //
af10: 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
af20: 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
af30: 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
af40: 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
af50: 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
af60: 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
af70: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
af80: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
af90: 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
afa0: 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
afb0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
afc0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
afd0: 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
afe0: 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
aff0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
b000: 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
b010: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
b020: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
b030: 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
b040: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
b050: 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
b060: 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
b070: 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
b080: 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
b090: 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
b0a0: 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
b0b0: 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
b0c0: 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
b0d0: 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
b0e0: 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
b0f0: 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
b100: 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
b110: 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
b120: 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
b130: 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
b140: 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
b150: 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
b160: 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
b170: 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
b180: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
b190: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
b1a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b1b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b1c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
b1d0: 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
b1e0: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
b1f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
b200: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
b210: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
b220: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b230: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
b240: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b250: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
b260: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
b270: 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
b280: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
b290: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
b2a0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
b2b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b2c0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
b2d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b2e0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b2f0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
b300: 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
b310: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
b320: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
b330: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
b340: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b350: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
b360: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b370: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
b380: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
b390: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
b3a0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
b3b0: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
b3c0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
b3d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b3e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b3f0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
b400: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
b410: 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
b420: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
b430: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
b440: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
b450: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b460: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
b470: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b480: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
b490: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
b4a0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
b4b0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
b4c0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
b4d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b4e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b4f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b500: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b510: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
b520: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
b530: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
b540: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
b550: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
b560: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b570: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b580: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
b590: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
b5a0: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
b5b0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
b5c0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
b5d0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
b5e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b5f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b620: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
b630: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
b640: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
b650: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
b660: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
b670: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b680: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
b690: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b6a0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
b6b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
b6c0: 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
b6d0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
b6e0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
b6f0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
b700: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b710: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
b720: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b730: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
b740: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
b750: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
b760: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
b770: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
b780: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
b790: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b7a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b7b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
b7c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
b7d0: 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
b7e0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
b7f0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
b800: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
b810: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b820: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
b830: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b840: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
b850: 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
b860: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
b870: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
b880: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
b890: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b8a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
b8b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b8c0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
b8d0: 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
b8e0: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
b8f0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
b900: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b910: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b920: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b930: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
b940: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
b950: 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
b960: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
b970: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
b980: 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
b990: 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
b9a0: 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
b9b0: 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
b9c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b9d0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b9e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b9f0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
ba00: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
ba10: 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
ba20: 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
ba30: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
ba40: 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
ba50: 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
ba60: 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
ba70: 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
ba80: 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
ba90: 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
baa0: 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
bab0: 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
bac0: 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
bad0: 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
bae0: 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
baf0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bb00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bb10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bb20: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
bb30: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
bb40: 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
bb50: 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
bb60: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
bb70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
bb80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bb90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
bba0: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
bbb0: 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
bbc0: 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
bbd0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
bbe0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bbf0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
bc00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
bc10: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
bc20: 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
bc30: 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
bc40: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
bc50: 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
bc60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bc70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
bc80: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
bc90: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
bca0: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
bcb0: 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
bcc0: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
bcd0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
bce0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
bcf0: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
bd00: 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
bd10: 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
bd20: 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
bd30: 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
bd40: 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
bd50: 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
bd60: 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
bd70: 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
bd80: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
bd90: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
bda0: 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
bdb0: 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
bdc0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
bdd0: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
bde0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
bdf0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
be00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
be10: 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
be20: 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
be30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
be40: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
be50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
be60: 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
be70: 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
be80: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
be90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bea0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
beb0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
bec0: 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
bed0: 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
bee0: 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
bef0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bf00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
bf10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bf20: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
bf30: 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
bf40: 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
bf50: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
bf60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bf70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
bf80: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
bf90: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
bfa0: 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
bfb0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
bfc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bfd0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bfe0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bff0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c000: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c010: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
c020: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
c030: 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
c040: 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
c050: 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
c060: 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
c070: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
c080: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
c090: 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
c0a0: 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
c0b0: 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
c0c0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
c0d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c0e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c0f0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
c100: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
c110: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
c120: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
c130: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
c140: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c150: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
c160: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c170: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c180: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
c190: 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
c1a0: 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
c1b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c1c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
c1d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c1e0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
c1f0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
c200: 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65  pen_interop(byte
c210: 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c  [] utf8Filename,
c220: 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73   SQLiteOpenFlags
c230: 45 6e 75 6d 20 66 6c 61 67 73 2c 20 72 65 66 20  Enum flags, ref 
c240: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
c250: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c260: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
c270: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c280: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
c290: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
c2a0: 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79  pen16_interop(by
c2b0: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
c2c0: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
c2d0: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 72 65  gsEnum flags, re
c2e0: 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
c2f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c300: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
c310: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c320: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c330: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c340: 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
c350: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
c360: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c370: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
c380: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c390: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
c3a0: 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
c3b0: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
c3c0: 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
c3d0: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
c3e0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
c3f0: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
c400: 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
c410: 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
c420: 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
c430: 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
c440: 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
c450: 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
c460: 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
c470: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
c480: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c490: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c4a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c4b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c4c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c4d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c4e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c4f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c500: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c510: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c520: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c530: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c540: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
c550: 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
c560: 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
c570: 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
c580: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c590: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c5a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c5b0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c5c0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c5d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c5e0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c5f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c600: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c610: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c620: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c630: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c640: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
c650: 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
c660: 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
c670: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c680: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c690: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c6a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c6b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c6c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c6d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c6e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c6f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c700: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c710: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c720: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c730: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
c740: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
c750: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
c760: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
c770: 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
c780: 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
c790: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
c7a0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
c7b0: 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
c7c0: 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
c7d0: 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
c7e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c7f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c800: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c810: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c820: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c830: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c840: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c850: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c860: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c870: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c880: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c890: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c8a0: 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
c8b0: 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
c8c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c8d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c8e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c8f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c900: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c910: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c920: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c930: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c940: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c950: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c960: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
c970: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
c980: 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
c990: 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
c9a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c9b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c9c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c9d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c9e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c9f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
ca00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ca10: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ca20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ca30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ca40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ca50: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
ca60: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
ca70: 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
ca80: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ca90: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
caa0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cab0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cac0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cad0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cae0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
caf0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cb00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cb10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cb20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cb30: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cb40: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
cb50: 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
cb60: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
cb70: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cb80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cb90: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cba0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cbb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cbc0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cbd0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cbe0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cbf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cc00: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cc10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cc20: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cc30: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
cc40: 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
cc50: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
cc60: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
cc70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cc80: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
cc90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cca0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ccb0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ccc0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ccd0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
cce0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ccf0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
cd00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cd10: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
cd20: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
cd30: 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
cd40: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
cd50: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
cd60: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
cd70: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
cd80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cd90: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
cda0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
cdb0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
cdc0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
cdd0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cde0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
cdf0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ce00: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
ce10: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
ce20: 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
ce30: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
ce40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ce50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ce60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ce70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ce80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ce90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cea0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ceb0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cec0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ced0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cee0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cef0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cf00: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
cf10: 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
cf20: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
cf30: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
cf40: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cf50: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cf60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
cf70: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
cf80: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
cf90: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
cfa0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
cfb0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
cfc0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
cfd0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
cfe0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
cff0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
d000: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
d010: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
d020: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d030: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d040: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d050: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
d060: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
d070: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
d080: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
d090: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d0a0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
d0b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d0c0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d0d0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
d0e0: 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
d0f0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
d100: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
d110: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d120: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d130: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d140: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d150: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d160: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d170: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d190: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d1a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d1b0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d1c0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
d1d0: 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
d1e0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
d1f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d200: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d210: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d220: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d230: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d240: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d250: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d260: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d270: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d280: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d290: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d2a0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d2b0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
d2c0: 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
d2d0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
d2e0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
d2f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d300: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d310: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d320: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d330: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d340: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d350: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d360: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d370: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d380: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d390: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d3a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
d3b0: 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
d3c0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
d3d0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d3e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d3f0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d400: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d410: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d420: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d430: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d440: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d450: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d460: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d470: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d480: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d490: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
d4a0: 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
d4b0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
d4c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d4d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d4e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d4f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d500: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d510: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d520: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d530: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d540: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d550: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d560: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d570: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d580: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
d590: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
d5a0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
d5b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d5c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d5d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d5e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
d5f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
d600: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
d610: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
d620: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d630: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
d640: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d650: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
d660: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
d670: 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
d680: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
d690: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
d6a0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d6b0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d6c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d6d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d6e0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d6f0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d700: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d710: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d720: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d730: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d740: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d750: 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
d760: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
d770: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
d780: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
d790: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d7a0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
d7b0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
d7c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
d7d0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
d7e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d7f0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
d800: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
d810: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
d820: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
d830: 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
d840: 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
d850: 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
d860: 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
d870: 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
d880: 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
d890: 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
d8a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d8b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d8c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d8d0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d8e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d8f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d900: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d910: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d920: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d930: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d940: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d950: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
d960: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
d970: 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
d980: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
d990: 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
d9a0: 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
d9b0: 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
d9c0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
d9d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d9e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d9f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
da00: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
da10: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
da20: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
da30: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
da40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
da50: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
da60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
da70: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
da80: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
da90: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
daa0: 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
dab0: 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
dac0: 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
dad0: 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
dae0: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
daf0: 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
db00: 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
db10: 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
db20: 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
db30: 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
db40: 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
db50: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
db60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
db70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
db80: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
db90: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
dba0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
dbb0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
dbc0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dbd0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
dbe0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dbf0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
dc00: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
dc10: 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
dc20: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
dc30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
dc40: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
dc50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
dc60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
dc70: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
dc80: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
dc90: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
dca0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
dcb0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
dcc0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
dcd0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
dce0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
dcf0: 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
dd00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
dd10: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
dd20: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
dd30: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
dd40: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
dd50: 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
dd60: 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
dd70: 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
dd80: 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
dd90: 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
dda0: 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
ddb0: 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
ddc0: 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
ddd0: 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
dde0: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
ddf0: 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
de00: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
de10: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
de20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
de30: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
de40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
de50: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
de60: 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
de70: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
de80: 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
de90: 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
dea0: 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
deb0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
dec0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ded0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dee0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
def0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
df00: 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
df10: 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
df20: 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
df30: 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
df40: 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
df50: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
df60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
df70: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
df80: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
df90: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
dfa0: 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
dfb0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
dfc0: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
dfd0: 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
dfe0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
dff0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e000: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
e010: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
e020: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
e030: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
e040: 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
e050: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
e060: 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
e070: 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
e080: 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
e090: 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
e0a0: 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
e0b0: 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
e0c0: 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
e0d0: 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
e0e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e0f0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
e100: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e110: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
e120: 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74  te3_resetall_int
e130: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
e140: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
e150: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e170: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
e180: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75  sqlite3_table_cu
e190: 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rsor_interop(Int
e1a0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62  Ptr stmt, int db
e1b0: 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50  , int tableRootP
e1c0: 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  age);....#endif.
e1d0: 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
e1e0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
e1f0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
e200: 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61   Standard API ca
e210: 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73  lls global acros
e220: 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65  s versions.  The
e230: 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73  re are a few ins
e240: 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f  tances of intero
e250: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20  p calls..    // 
e260: 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72  scattered in her
e270: 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20  e, but they are 
e280: 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e  only active when
e290: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
e2a0: 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65  TFRAMEWORK is de
e2b0: 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65  clared...    #re
e2c0: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71  gion standard sq
e2d0: 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
e2e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e2f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e300: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e310: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e320: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e330: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e340: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e350: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e360: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e370: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e380: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e390: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
e3a0: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  3_libversion();.
e3b0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e3c0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e3d0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e3e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e3f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e400: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
e410: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
e420: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e430: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e440: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
e450: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e460: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
e470: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
e480: 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  r();....#if !PLA
e490: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e4a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e4b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e4c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e4d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e4e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e4f0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e500: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e510: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e520: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e530: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
e540: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
e550: 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
e560: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e570: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e580: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e590: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e5a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e5b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e5c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e5d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e5e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e5f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e600: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
e610: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
e620: 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f  n_used(IntPtr zO
e630: 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ptName);....#if 
e640: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
e650: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e660: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e670: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
e680: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
e690: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e6a0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e6b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e6c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e6d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e6e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
e6f0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  Ptr sqlite3_comp
e700: 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
e710: 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t N);....#if !PL
e720: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e730: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e740: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e750: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e760: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e770: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e780: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e790: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e7a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e7b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e7c0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
e7d0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
e7e0: 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
e7f0: 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20  cache(..        
e800: 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a  int enable);....
e810: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e820: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e830: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e840: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e850: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e860: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e870: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e880: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e890: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e8a0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e8b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e8c0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
e8d0: 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f   sqlite3_enable_
e8e0: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d  load_extension(.
e8f0: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
e900: 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b  db, int enable);
e910: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e920: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e930: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e940: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e950: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e960: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e970: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e980: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e990: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e9a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e9b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e9c0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e9d0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61  Code sqlite3_loa
e9e0: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
e9f0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
ea00: 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65   byte[] fileName
ea10: 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d  , byte[] procNam
ea20: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45  e, ref IntPtr pE
ea30: 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rror);....#if !P
ea40: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ea50: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
ea60: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ea70: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ea80: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ea90: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
eaa0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
eab0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
eac0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ead0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
eae0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
eaf0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
eb00: 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63  e3_overload_func
eb10: 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
eb20: 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e  IntPtr zName, in
eb30: 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66  t nArgs);....#if
eb40: 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50   WINDOWS..#if !P
eb50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
eb60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
eb70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
eb80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
eb90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
eba0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ebb0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
ebc0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
ebd0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ebe0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ebf0: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
ec00: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
ec10: 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  ndif..    //..  
ec20: 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22    // NOTE: The "
ec30: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
ec40: 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c  t_directory" SQL
ec50: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
ec60: 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
ec70: 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
ec80: 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
ec90: 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dows...    //.. 
eca0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ecb0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ecc0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
ecd0: 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
ece0: 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
ecf0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
ed00: 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f  ...#if !DEBUG //
ed10: 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65   NOTE: Should be
ed20: 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20 21   "WIN32HEAP && !
ed30: 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21  MEMDEBUG"..#if !
ed40: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ed50: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ed60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ed70: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ed80: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ed90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
eda0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
edb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
edc0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
edd0: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
ede0: 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
edf0: 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
ee00: 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65  eap" SQLite core
ee10: 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
ee20: 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
ee30: 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
ee40: 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65  d on Windows whe
ee50: 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  n the Win32 nati
ee60: 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ve allocator is 
ee70: 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  in..    //      
ee80: 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65   use (i.e. by de
ee90: 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61  fault, in "Relea
eea0: 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  se" builds of Sy
eeb0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
eec0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
eed0: 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c  nly).  By defaul
eee0: 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75  t, in "Debug" bu
eef0: 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
ef00: 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d  ata.SQLite, the.
ef10: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45  .    //       ME
ef20: 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72  MDEBUG allocator
ef30: 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   is used...    /
ef40: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
ef50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
ef60: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
ef70: 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65  lite3_win32_rese
ef80: 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66  t_heap();....#if
ef90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
efa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
efb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
efc0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
efd0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
efe0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
eff0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f000: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f010: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f020: 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
f030: 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
f040: 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
f050: 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  ct_heap" SQLite 
f060: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
f070: 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
f080: 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
f090: 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
f0a0: 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
f0b0: 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
f0c0: 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
f0d0: 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
f0e0: 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
f0f0: 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
f100: 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
f110: 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
f120: 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
f130: 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
f140: 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
f150: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
f160: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
f170: 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
f180: 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
f190: 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
f1a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f1b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
f1c0: 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
f1d0: 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66  compact_heap(ref
f1e0: 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d   uint largest);.
f1f0: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
f200: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f210: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f220: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f230: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f240: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f250: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f260: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f270: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f280: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f290: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f2a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f2b0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f2c0: 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29  e3_malloc(int n)
f2d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
f2e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f2f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f300: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f310: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f320: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f330: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f340: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f350: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f360: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
f370: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f380: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
f390: 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
f3a0: 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
f3b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f3c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f3d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f3e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
f3f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
f400: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f410: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
f420: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
f430: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f440: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
f450: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f460: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
f470: 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
f480: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f490: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f4a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f4b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f4c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f4d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f4e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f4f0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f500: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f510: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f520: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f530: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
f540: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
f550: 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
f560: 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ilename, ref Int
f570: 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
f580: 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
f590: 73 2c 20 49 6e 74 50 74 72 20 76 66 73 29 3b 0d  s, IntPtr vfs);.
f5a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f5b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f5c0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f5d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f5e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f5f0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f600: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
f610: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
f620: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
f630: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f640: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
f650: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
f660: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
f670: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f680: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f690: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f6a0: 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20  3_open16(string 
f6b0: 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e  fileName, ref In
f6c0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
f6d0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f6e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f6f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f700: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f710: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f720: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f730: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f740: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f750: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f760: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f770: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
f780: 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  id sqlite3_inter
f790: 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b  rupt(IntPtr db);
f7a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f7b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f7c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
f7d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
f7e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f7f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
f800: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
f810: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f820: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
f830: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
f840: 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64  t_rowid(IntPtr d
f850: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  b);..#endif....#
f860: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f870: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f880: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f890: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f8a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f8b0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f8c0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
f8d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f8e0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
f8f0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
f900: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f910: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e  int sqlite3_chan
f920: 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ges(IntPtr db);.
f930: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f940: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f950: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f960: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f970: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f980: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f990: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
f9a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f9b0: 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
f9c0: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
f9d0: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  ();..#endif....#
f9e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f9f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fa00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fa10: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
fa20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
fa30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
fa40: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
fa50: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
fa60: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
fa70: 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
fa80: 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29  r(int resetFlag)
fa90: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
faa0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fab0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fac0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fad0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
fae0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
faf0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fb00: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
fb10: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fb20: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
fb30: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
fb40: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
fb50: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
fb60: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
fb70: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
fb80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
fb90: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
fba0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
fbb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
fbc0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
fbd0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
fbe0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
fbf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
fc00: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
fc10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fc20: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fc30: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75  rCode sqlite3_bu
fc40: 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74  sy_timeout(IntPt
fc50: 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a  r db, int ms);..
fc60: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
fc70: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
fc80: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fc90: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
fca0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
fcb0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fcc0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
fcd0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
fce0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
fcf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
fd00: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fd10: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
fd20: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
fd30: 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
fd40: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74  , int index, Byt
fd50: 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
fd60: 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72  Size, IntPtr nTr
fd70: 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66  ansient);....#if
fd80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fd90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fda0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fdb0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
fdc0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
fdd0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fde0: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
fdf0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fe00: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
fe10: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
fe20: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
fe30: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f  t, int index, do
fe40: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
fe50: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
fe60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fe70: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
fe80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fe90: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
fea0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
feb0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
fec0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fed0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fee0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
fef0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ff00: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
ff10: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
ff20: 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72  _bind_int(IntPtr
ff30: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
ff40: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
ff50: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
ff60: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
ff70: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
ff80: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b  lite3_bind_int";
ff90: 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
ffa0: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
ffb0: 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
ffc0: 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
ffd0: 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69   unsigned (32-bi
ffe0: 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
fff0: 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
10000 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10010 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10020 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10030 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
10040 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c  lite3_bind_int",
10050 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10060 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10070 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10080 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10090 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
100a0 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
100b0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
100c0 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
100d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
100e0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
100f0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10100 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72  bind_uint(IntPtr
10110 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10120 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  , uint value);..
10130 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10140 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10150 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10160 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10170 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10180 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10190 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
101a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
101b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
101c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
101d0 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ind_int64(IntPtr
101e0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
101f0 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
10200 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
10210 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
10220 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
10230 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
10240 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65  ind_int64"; howe
10250 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
10260 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
10270 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
10280 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
10290 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69  gned long (64-bi
102a0 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
102b0 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
102c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
102d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
102e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
102f0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
10300 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
10310 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
10320 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10340 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10350 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10360 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10370 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
10380 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10390 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76  t index, ulong v
103a0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
103b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
103c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
103d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
103e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
103f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10410 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10420 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10430 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10440 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10450 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10460 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10470 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
10480 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74  null(IntPtr stmt
10490 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
104a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
104b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
104c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
104d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
104e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
104f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10500 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10510 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10520 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10530 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10540 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10550 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10560 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
10570 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
10580 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65   int index, byte
10590 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c  [] value, int nl
105a0 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
105b0 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
105c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
105d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
105e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
105f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10600 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10610 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10620 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10640 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10650 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10660 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
10670 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
10680 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74  ameter_count(Int
10690 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
106a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
106b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
106c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
106d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
106e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
106f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10700 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10710 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10720 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10730 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10740 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
10750 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
10760 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
10770 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74  IntPtr stmt, byt
10780 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d  e[] strName);...
10790 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
107a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
107b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
107c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
107d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
107e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
107f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10800 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10810 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10820 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10830 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10840 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
10850 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74  lumn_count(IntPt
10860 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
10870 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10880 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10890 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
108a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
108b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
108c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
108d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
108e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
108f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10900 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10910 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10920 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10930 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72  ite3_step(IntPtr
10940 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
10950 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10960 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10970 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10980 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10990 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
109a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
109b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
109c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
109d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
109e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
109f0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
10a00 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
10a10 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74 6d  donly(IntPtr stm
10a20 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f  t); /* 3.7.4+ */
10a30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10a40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10a50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10a60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10a70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10a80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10a90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
10aa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10ab0 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
10ac0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
10ad0 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
10ae0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10af0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
10b00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10b10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10b20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10b30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10b40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10b50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10b60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10b80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10b90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10ba0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
10bb0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
10bc0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
10bd0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
10be0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10bf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10c10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10c20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10c30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10c40 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
10c50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10c60 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
10c70 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74  column_int64(Int
10c80 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10c90 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
10ca0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10cb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10cc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10cd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10ce0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10cf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10d00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10d10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10d20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10d30 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10d40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10d50 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10d60 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74  _column_blob(Int
10d70 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10d80 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10d90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10da0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10db0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10dc0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10dd0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10de0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10df0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10e00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10e10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10e20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10e30 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10e40 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
10e50 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  es(IntPtr stmt, 
10e60 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
10e70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10e80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10e90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10ea0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10eb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10ec0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10ed0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10ee0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10ef0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10f00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10f10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10f20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
10f30 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  mn_bytes16(IntPt
10f40 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10f50 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10f60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10f70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10f80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10f90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10fa0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10fb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10fc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10fd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10fe0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10ff0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11000 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
11010 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
11020 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
11030 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
11040 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11050 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11060 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11070 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11080 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11090 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
110a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
110b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
110c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
110d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
110e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
110f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
11100 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
11110 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49  eate_collation(I
11120 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
11130 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54   strName, int nT
11140 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
11150 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74  er, SQLiteCollat
11160 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69  ion func);....#i
11170 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11180 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11190 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
111a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
111b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
111c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
111d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
111e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
111f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11200 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11210 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
11220 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  nt sqlite3_aggre
11230 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74  gate_count(IntPt
11240 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
11250 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11260 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11270 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11280 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11290 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
112a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
112b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
112c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
112d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
112e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
112f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11300 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
11310 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
11320 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
11330 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11340 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11350 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11360 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11370 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11380 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11390 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
113a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
113b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
113c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
113d0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
113e0 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
113f0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
11400 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11410 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11420 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11430 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11440 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11450 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11460 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11480 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11490 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
114a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
114b0 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
114c0 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  e_bytes16(IntPtr
114d0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
114e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
114f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11500 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11510 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11520 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11530 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11540 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11550 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75  tatic extern dou
11560 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ble sqlite3_valu
11570 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  e_double(IntPtr 
11580 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
11590 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
115a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
115b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
115c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
115d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
115e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
115f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11600 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11610 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11620 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11630 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11640 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
11650 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b  e_int(IntPtr p);
11660 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11670 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11680 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11690 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
116a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
116b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
116c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
116d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
116e0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
116f0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
11700 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65  4(IntPtr p);..#e
11710 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
11720 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11730 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11740 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11750 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11760 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11770 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11780 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11790 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
117a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
117b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
117c0 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
117d0 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61  inity sqlite3_va
117e0 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20  lue_type(IntPtr 
117f0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
11800 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11810 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11820 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11830 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11840 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11850 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11860 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11870 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11880 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11890 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
118a0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
118b0 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
118c0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
118d0 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
118e0 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
118f0 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
11900 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11910 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11930 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11950 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11960 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
11970 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11980 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11990 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
119a0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
119b0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
119c0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
119d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
119e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
119f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11a00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11a10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11a20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11a30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11a40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11a50 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11a60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11a70 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11a80 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
11a90 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e  error(IntPtr con
11aa0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  text, byte[] str
11ab0 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  Err, int nLen);.
11ac0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11ad0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11ae0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11af0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11b00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11b10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11b20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11b30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11b40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11b50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11b60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11b70 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11b80 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f  _result_error_co
11b90 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  de(IntPtr contex
11ba0 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  t, SQLiteErrorCo
11bb0 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  de value);....#i
11bc0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11bd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11be0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11bf0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11c00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11c10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11c20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11c30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11c40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11c50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11c60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
11c70 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
11c80 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
11c90 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
11ca0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11cb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11cc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11cf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11d00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11d10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11d20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11d30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11d40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11d50 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11d60 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e  3_result_error_n
11d70 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74  omem(IntPtr cont
11d80 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
11d90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11da0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11db0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11dc0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11dd0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11de0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11df0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11e00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11e10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11e20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11e30 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
11e40 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
11e50 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lue(IntPtr conte
11e60 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65  xt, IntPtr value
11e70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11e80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11e90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11ea0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11eb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11ec0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11ed0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11ee0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11ef0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11f00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11f10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11f20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11f30 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62  te3_result_zerob
11f40 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
11f50 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  xt, int nLen);..
11f60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11f70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11f80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11f90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11fa0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11fb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11fc0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11fd0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11fe0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11ff0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12000 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12010 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
12020 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74  result_int(IntPt
12030 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76  r context, int v
12040 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
12050 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12060 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12070 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12080 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12090 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
120a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
120b0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
120c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
120d0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
120e0 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  lt_int64(IntPtr 
120f0 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61  context, long va
12100 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
12110 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12120 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12140 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12160 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12170 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12180 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12190 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
121a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
121b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
121c0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
121d0 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74  esult_null(IntPt
121e0 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
121f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12200 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12210 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12220 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12230 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12240 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12250 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12260 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12270 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12280 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12290 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
122a0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
122b0 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ult_text(IntPtr 
122c0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
122d0 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  value, int nLen,
122e0 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
122f0 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
12300 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12310 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12330 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12340 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12350 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12360 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12370 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12380 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12390 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
123a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
123b0 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
123c0 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72  e_context(IntPtr
123d0 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42   context, int nB
123e0 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ytes);....#if !P
123f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12400 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12410 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12420 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12430 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12440 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12450 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
12460 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
12470 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12490 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
124a0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
124b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
124c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
124d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
124e0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
124f0 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  xt16(IntPtr stmt
12500 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72  , int index, str
12510 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  ing value, int n
12520 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
12530 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
12540 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12550 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12560 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12570 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12580 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
125a0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
125b0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
125c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
125d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
125e0 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
125f0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
12600 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12610 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12620 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
12630 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49  result_error16(I
12640 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
12650 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
12660 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
12670 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12680 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12690 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
126a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
126b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
126c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
126d0 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
126e0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
126f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12700 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12710 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
12720 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
12730 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12740 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12750 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
12760 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49  _result_text16(I
12770 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
12780 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
12790 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
127a0 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
127b0 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45  #if INTEROP_CODE
127c0 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43  C || INTEROP_INC
127d0 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21 50  LUDE_SEE..#if !P
127e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
127f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12800 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12810 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12820 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12830 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12840 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12850 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12860 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12870 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12880 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
12890 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
128a0 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62  e3_key(IntPtr db
128b0 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
128c0 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69  t keylen);....#i
128d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
128e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
128f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12900 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12910 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12920 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12930 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12950 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12960 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12970 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
12980 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
12990 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74  qlite3_rekey(Int
129a0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
129b0 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
129c0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
129d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
129e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
129f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12a00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12a10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12a20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12a30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12a40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12a50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12a60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12a70 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
12a80 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  Ptr sqlite3_set_
12a90 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74  authorizer(IntPt
12aa0 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68  r db, SQLiteAuth
12ab0 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66  orizerCallback f
12ac0 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
12ad0 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
12ae0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12af0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12b00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12b10 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12b20 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12b30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12b40 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12b50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12b60 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12b70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12b80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12b90 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
12ba0 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
12bb0 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
12bc0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
12bd0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
12be0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12bf0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12c00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12c10 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12c20 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12c30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12c40 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12c50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12c60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12c70 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12c80 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
12c90 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
12ca0 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
12cb0 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
12cc0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
12cd0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
12ce0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12cf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12d00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12d10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12d20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12d30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12d40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12d50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12d60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12d70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12d80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12d90 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
12da0 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
12db0 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
12dc0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
12dd0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
12de0 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
12df0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
12e00 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
12e10 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
12e20 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
12e30 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
12e40 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
12e50 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
12e60 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
12e70 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
12e80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12e90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12ea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
12eb0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
12ec0 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
12ed0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12ee0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12ef0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12f00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12f10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
12f20 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
12f30 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
12f40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12f50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12f60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12f70 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
12f80 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
12f90 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
12fa0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12fb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12fc0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12fd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
12fe0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
12ff0 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
13000 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13010 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13020 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13030 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13040 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
13050 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
13060 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
13070 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13080 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13090 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
130a0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
130b0 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
130c0 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
130d0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
130e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
130f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13100 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13110 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
13120 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
13130 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
13140 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13150 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13160 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13180 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
13190 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
131a0 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
131b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
131c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
131d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
131e0 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
131f0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
13200 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
13210 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
13220 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
13230 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13240 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13250 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13260 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13270 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13280 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13290 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
132a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
132b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
132c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
132d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
132e0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
132f0 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49  _rollback_hook(I
13300 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
13310 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b  RollbackCallback
13320 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
13330 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
13340 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13350 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13360 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13370 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13380 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13390 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
133a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
133b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
133c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
133d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
133e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
133f0 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e  r sqlite3_db_han
13400 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29  dle(IntPtr stmt)
13410 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13420 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13430 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13450 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13460 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13470 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13480 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13490 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
134a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
134b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
134c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
134d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
134e0 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
134f0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
13500 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13510 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13520 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13530 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13540 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13550 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13560 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13570 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13580 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13590 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
135a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
135b0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
135c0 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74  b_filename(IntPt
135d0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e  r db, IntPtr dbN
135e0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
135f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13600 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13610 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13620 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13630 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13640 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13650 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13660 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13670 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13680 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13690 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
136a0 20 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74   sqlite3_next_st
136b0 6d 74 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  mt(IntPtr db, In
136c0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
136d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
136e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
136f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13700 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13710 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13720 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13730 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13740 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13750 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13760 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13770 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13780 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13790 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74  sqlite3_exec(Int
137a0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
137b0 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76  trSql, IntPtr pv
137c0 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72  Callback, IntPtr
137d0 20 70 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e   pvParam, ref In
137e0 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d  tPtr errMsg);...
137f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13800 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13810 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13820 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13830 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13840 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13850 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13860 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13870 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13880 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13890 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
138a0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65  n int sqlite3_re
138b0 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74  lease_memory(int
138c0 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66   nBytes);....#if
138d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
138e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
138f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13900 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13910 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13920 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13930 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13940 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13950 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13960 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13970 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
13980 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75  t sqlite3_get_au
13990 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20  tocommit(IntPtr 
139a0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
139b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
139c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
139d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
139e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
139f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13a00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13a10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13a20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13a30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13a40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13a50 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13a60 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13a70 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74  _extended_result
13a80 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62  _codes(IntPtr db
13a90 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d  , int onoff);...
13aa0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13ab0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13ac0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13ad0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13ae0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13af0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13b00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13b10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13b20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13b30 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13b40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13b50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13b60 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  e sqlite3_errcod
13b70 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
13b80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13b90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13ba0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13bb0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13bc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13bd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13be0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13bf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13c00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13c10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13c20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13c30 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13c40 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
13c50 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  ed_errcode(IntPt
13c60 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
13c70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13c80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13c90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13ca0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13cb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13cc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13cd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13ce0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13cf0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13d00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13d10 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13d20 72 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72  r sqlite3_errstr
13d30 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  (SQLiteErrorCode
13d40 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b   rc); /* 3.7.15+
13d50 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69   */....    // Si
13d60 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  nce sqlite3_log(
13d70 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62  ) takes a variab
13d80 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74  le argument list
13d90 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65  , we have to ove
13da0 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f  rload declaratio
13db0 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61  ns..    // for a
13dc0 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c  ll possible call
13dd0 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20  s.  For now, we 
13de0 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e  are only exposin
13df0 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e  g a single strin
13e00 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64  g, and..    // d
13e10 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c  epend on the cal
13e20 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68  ler to format th
13e30 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21  e string...#if !
13e40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13e50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13e60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13e70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13e80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13e90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13ea0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13eb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13ec0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13ed0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13ee0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
13ef0 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c   sqlite3_log(SQL
13f00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72  iteErrorCode iEr
13f10 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46  rCode, byte[] zF
13f20 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ormat);....#if !
13f30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13f40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13f50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13f60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13f70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13f80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13f90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13fa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13fb0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13fc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13fd0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13fe0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13ff0 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
14000 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
14010 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20  [] zDbName, int 
14020 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29  op, IntPtr pArg)
14030 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14050 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14070 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14080 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14090 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
140a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
140b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
140c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
140d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
140e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
140f0 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74  ite3_backup_init
14100 28 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20  (IntPtr destDb, 
14110 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65  byte[] zDestName
14120 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44  , IntPtr sourceD
14130 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63  b, byte[] zSourc
14140 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  eName);....#if !
14150 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14160 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14170 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14180 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14190 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
141a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
141b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
141c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
141d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
141e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
141f0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14200 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14210 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28  te3_backup_step(
14220 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69  IntPtr backup, i
14230 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69  nt nPage);....#i
14240 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14250 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14270 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14280 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14290 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
142a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
142b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
142c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
142d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
142e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
142f0 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  nt sqlite3_backu
14300 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50  p_remaining(IntP
14310 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23  tr backup);....#
14320 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14330 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14340 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14350 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14360 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14370 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14380 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14390 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
143a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
143b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
143c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
143d0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  int sqlite3_back
143e0 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74  up_pagecount(Int
143f0 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
14400 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14410 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14430 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14440 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14450 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14460 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14470 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14480 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14490 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
144a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
144b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
144c0 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65   sqlite3_declare
144d0 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c  _vtab(IntPtr db,
144e0 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a   IntPtr zSQL);..
144f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14500 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14510 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14520 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14530 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14550 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14560 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14570 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14580 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14590 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
145a0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
145b0 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72  3_mprintf(IntPtr
145c0 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69   format, __argli
145d0 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65  st);..    #endre
145e0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  gion....    // S
145f0 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20  QLite API calls 
14600 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65  that are provide
14610 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e  d by "well-known
14620 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61  " extensions tha
14630 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61  t may be statica
14640 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b  lly..    // link
14650 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69  ed with the SQLi
14660 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c  te core native l
14670 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79  ibrary currently
14680 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72   in use...    #r
14690 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20  egion extension 
146a0 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
146b0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
146c0 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
146d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
146e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
146f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14700 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14710 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14720 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14730 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14740 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14750 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14760 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14770 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
14780 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65  tPtr sqlite3_cre
14790 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
147a0 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  odule(IntPtr db,
147b0 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65   IntPtr name, re
147c0 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  f sqlite3_module
147d0 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20   module, IntPtr 
147e0 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65  pClientData, xDe
147f0 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73  stroyModule xDes
14800 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  troy);....#if !P
14810 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14820 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14830 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14840 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14850 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14860 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14870 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14880 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14890 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
148a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
148b0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
148c0 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f  sqlite3_dispose_
148d0 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d  module(IntPtr pM
148e0 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  odule);..#endif.
148f0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
14900 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14950 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
14960 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70  n sqlite interop
14970 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54   api calls (.NET
14980 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
14990 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c  rk only)..#if PL
149a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
149b0 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
149c0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
149d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
149e0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    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 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14a10 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
14a20 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  wid_interop(IntP
14a30 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20  tr db, ref long 
14a40 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowId);....    [
14a50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14a60 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14a80 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14a90 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65  memory_used_inte
14aa0 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74  rop(ref long byt
14ab0 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  es);....    [Dll
14ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14ad0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14ae0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14af0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d  void sqlite3_mem
14b00 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e  ory_highwater_in
14b10 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46  terop(int resetF
14b20 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79  lag, ref long by
14b30 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
14b40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14b50 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
14b60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14b70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14b80 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
14b90 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
14ba0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14bb0 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
14bc0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
14bd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14be0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14bf0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14c00 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14c10 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
14c20 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
14c30 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14c40 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76  ndex, ref long v
14c50 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
14c60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14c70 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
14c80 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
14c90 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d  int64_interop")]
14ca0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14cb0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
14cc0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
14cd0 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
14ce0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14cf0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14d00 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65   ref ulong value
14d10 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14d20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14d30 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14d40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14d50 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
14d60 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  n_double_interop
14d70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14d80 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
14d90 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
14da0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14db0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14dc0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14dd0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14de0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
14df0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14e00 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14e10 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29   ref long value)
14e20 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
14e30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14e40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14e50 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
14e60 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  d sqlite3_value_
14e70 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
14e80 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75  ntPtr p, ref dou
14e90 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
14ea0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14eb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14ec0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14ed0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14ee0 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f  te3_value_int64_
14ef0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
14f00 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75  , ref Int64 valu
14f10 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
14f20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14f30 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
14f40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
14f50 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
14f60 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  lt_double_intero
14f70 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
14f80 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
14f90 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
14fa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14fb0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14fc0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14fd0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
14fe0 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ult_int64_intero
14ff0 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
15000 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75  , ref Int64 valu
15010 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
15020 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15030 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15040 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
15050 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72  ntPtr sqlite3_cr
15060 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
15070 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d  module_interop(.
15080 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15090 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c  db, IntPtr name,
150a0 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c   IntPtr pModule,
150b0 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78   int iVersion, x
150c0 43 72 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d  Create xCreate,.
150d0 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63  .        xConnec
150e0 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73  t xConnect, xBes
150f0 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
15100 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  x, xDisconnect x
15110 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20  Disconnect,..   
15120 20 20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44       xDestroy xD
15130 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f  estroy, xOpen xO
15140 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f  pen, xClose xClo
15150 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c  se, xFilter xFil
15160 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e  ter,..        xN
15170 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20  ext xNext, xEof 
15180 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43  xEof, xColumn xC
15190 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52  olumn, xRowId xR
151a0 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20 78 55  owId, xUpdate xU
151b0 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  pdate,..        
151c0 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78  xBegin xBegin, x
151d0 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d  Sync xSync, xCom
151e0 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f  mit xCommit, xRo
151f0 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b  llback xRollback
15200 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64  ,..        xFind
15210 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75  Function xFindFu
15220 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20  nction, xRename 
15230 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f  xRename, xSavepo
15240 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d  int xSavepoint,.
15250 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73  .        xReleas
15260 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c  e xRelease, xRol
15270 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63  lbackTo xRollbac
15280 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  kTo, IntPtr pCli
15290 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20  entData,..      
152a0 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65    xDestroyModule
152b0 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29   xDestroyModule)
152c0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ;..#endif..    /
152d0 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  / PLATFORM_COMPA
152e0 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21  CTFRAMEWORK && !
152f0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
15300 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
15310 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
15320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15360 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
15370 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74  n Native Delegat
15380 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  es..#if INTEROP_
15390 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23  VIRTUAL_TABLE..#
153a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
153b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
153c0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
153d0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
153e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
153f0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
15400 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
15410 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
15420 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20  ode xCreate(..  
15430 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
15440 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
15450 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
15460 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
15470 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
15480 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
15490 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
154a0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
154b0 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
154c0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
15520 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15530 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
15540 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
15550 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
15560 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15570 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
15580 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
15590 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65  ErrorCode xConne
155a0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
155b0 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
155c0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
155d0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
155e0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
155f0 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
15600 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
15610 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
15620 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
15630 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15680 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15690 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
156a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
156b0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
156c0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
156d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
156e0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
156f0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
15700 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15710 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20   xBestIndex(..  
15720 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
15730 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ab,..        Int
15740 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
15750 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
157b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
157c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
157d0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
157e0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
157f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15800 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15810 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
15820 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
15830 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
15840 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
15850 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
158b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
158c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
158d0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
158e0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
158f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15900 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
15910 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
15920 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
15930 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20  ode xDestroy(.. 
15940 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
15950 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
15960 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
159b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
159c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
159d0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
159e0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
159f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15a00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
15a10 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
15a20 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
15a30 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20  orCode xOpen(.. 
15a40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
15a50 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
15a60 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72  f IntPtr pCursor
15a70 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
15a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
15ad0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15ae0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15af0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
15b00 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
15b10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15b20 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
15b30 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
15b40 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
15b50 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20  ode xClose(..   
15b60 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
15b70 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
15b80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15bd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15be0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15bf0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
15c00 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
15c10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15c20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
15c30 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
15c40 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
15c50 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
15c60 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15c70 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
15c80 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
15c90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64         IntPtr id
15ca0 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69  xStr,..        i
15cb0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
15cc0 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
15cd0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15d30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15d40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15d50 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
15d60 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
15d70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15d80 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
15d90 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
15da0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15db0 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20   xNext(..       
15dc0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
15dd0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
15e30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15e40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15e50 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
15e60 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
15e70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15e80 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
15e90 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
15ea0 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20  te int xEof(..  
15eb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
15ec0 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
15ed0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15f20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15f30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15f40 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
15f50 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
15f60 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
15f70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15f80 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15f90 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15fa0 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28  rorCode xColumn(
15fb0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15fc0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
15fd0 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65     IntPtr pConte
15fe0 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  xt,..        int
15ff0 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a   index..    );..
16000 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
16060 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16070 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
16080 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
16090 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
160a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
160b0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
160c0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
160d0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64  ErrorCode xRowId
160e0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
160f0 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
16100 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
16110 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
16120 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16170 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16180 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16190 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
161a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
161b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
161c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
161d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
161e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
161f0 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a  rCode xUpdate(..
16200 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16210 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
16220 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
16230 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
16240 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
16250 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
16260 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162b0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
162c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
162d0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
162e0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
162f0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
16300 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16310 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
16320 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
16330 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
16340 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
16350 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
16360 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
16370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
163c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
163d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
163e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
163f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
16400 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16410 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
16420 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
16430 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63  eErrorCode xSync
16440 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
16450 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
16460 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
16470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
164c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
164d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
164e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
164f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
16500 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16510 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
16520 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
16530 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d  eErrorCode xComm
16540 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  it(..        Int
16550 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
16560 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
16570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165b0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
165c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
165d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
165e0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
165f0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16600 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16610 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
16620 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
16630 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
16640 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
16650 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
16660 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
166c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
166d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
166e0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
166f0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16700 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16710 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
16720 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
16730 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69   int xFindFuncti
16740 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
16750 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
16760 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20      int nArg,.. 
16770 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
16780 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ame,..        re
16790 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  f SQLiteCallback
167a0 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20   callback,..    
167b0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
167c0 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b  UserData..    );
167d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16820 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
16830 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16840 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
16850 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
16860 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
16870 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16880 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16890 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
168a0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e  teErrorCode xRen
168b0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ame(..        In
168c0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
168d0 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77       IntPtr zNew
168e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
168f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
16940 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16950 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16960 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16970 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16980 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16990 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
169a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
169b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
169c0 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d  ode xSavepoint(.
169d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
169e0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
169f0 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
16a00 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
16a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
16a60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16a70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16a80 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16a90 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16aa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16ab0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16ac0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16ad0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16ae0 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  e xRelease(..   
16af0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16b00 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
16b10 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
16b20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
16b80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16b90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
16ba0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
16bb0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
16bc0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16bd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
16be0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
16bf0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
16c00 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
16c10 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16c20 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
16c30 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
16c40 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c90 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
16ca0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16cb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
16cc0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
16cd0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16ce0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16cf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
16d00 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69  lic delegate voi
16d10 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  d xDestroyModule
16d20 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44  (IntPtr pClientD
16d30 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ata);..#endif.. 
16d40 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
16d50 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16da0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
16db0 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65  Native Structure
16dc0 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
16dd0 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20  IRTUAL_TABLE..  
16de0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
16df0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
16e00 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
16e10 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
16e20 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
16e30 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
16e40 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b  ic int iVersion;
16e50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
16e60 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
16e70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
16e80 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e  c xConnect xConn
16e90 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ect;..        pu
16ea0 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20  blic xBestIndex 
16eb0 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20  xBestIndex;..   
16ec0 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 69 73       public xDis
16ed0 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
16ee0 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ect;..        pu
16ef0 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44  blic xDestroy xD
16f00 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20  estroy;..       
16f10 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f   public xOpen xO
16f20 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  pen;..        pu
16f30 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f  blic xClose xClo
16f40 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  se;..        pub
16f50 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c  lic xFilter xFil
16f60 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ter;..        pu
16f70 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74  blic xNext xNext
16f80 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
16f90 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20  c xEof xEof;..  
16fa0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f        public xCo
16fb0 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20  lumn xColumn;.. 
16fc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
16fd0 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20  owId xRowId;..  
16fe0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 55 70        public xUp
16ff0 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20  date xUpdate;.. 
17000 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42         public xB
17010 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20  egin xBegin;..  
17020 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79        public xSy
17030 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20  nc xSync;..     
17040 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69     public xCommi
17050 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20  t xCommit;..    
17060 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c      public xRoll
17070 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d  back xRollback;.
17080 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17090 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46  xFindFunction xF
170a0 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20  indFunction;..  
170b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65        public xRe
170c0 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20  name xRename;.. 
170d0 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65         /* The me
170e0 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
170f0 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20  in version 1 of 
17100 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  the sqlite3_modu
17110 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f  le..         * o
17120 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65  bject.  Those be
17130 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73  low are for vers
17140 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65  ion 2 and greate
17150 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  r. */..        p
17160 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74  ublic xSavepoint
17170 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20   xSavepoint;..  
17180 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65        public xRe
17190 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d  lease xRelease;.
171a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
171b0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c  xRollbackTo xRol
171c0 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d  lbackTo;..    }.
171d0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
17230 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
17240 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
17250 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17260 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
17270 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  b..    {..      
17280 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
17290 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20  pModule;..      
172a0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65    public int nRe
172b0 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20  f; /* NO LONGER 
172c0 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
172d0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a   public IntPtr z
172e0 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a  ErrMsg;..    }..
172f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17340 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
17350 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
17360 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
17370 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
17380 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
17390 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a  _cursor..    {..
173a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
173b0 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20  ntPtr pVTab;..  
173c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
173d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
17420 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
17430 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
17440 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
17450 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
17460 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
17470 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
17480 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
17490 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
174a0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
174b0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
174c0 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  raint constraint
174d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
174e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
174f0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
17500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
17510 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20   (constraint != 
17520 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17530 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17540 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20        iColumn = 
17550 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75  constraint.iColu
17560 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
17570 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72       op = constr
17580 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20  aint.op;..      
17590 20 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65            usable
175a0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73   = constraint.us
175b0 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  able;..         
175c0 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73         iTermOffs
175d0 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  et = constraint.
175e0 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
175f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
17600 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
17610 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17660 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
17670 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
17680 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
17690 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
176a0 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75   op;..        pu
176b0 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65  blic byte usable
176c0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
176d0 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65  c int iTermOffse
176e0 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t;..    }....   
176f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17740 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
17750 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
17760 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
17770 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
17780 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
17790 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  erby..    {..   
177a0 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
177b0 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
177c0 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
177d0 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
177e0 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20  By orderBy..    
177f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
17800 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
17810 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
17820 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65          if (orde
17830 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rBy != null)..  
17840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17850 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
17860 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69  lumn = orderBy.i
17870 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
17880 20 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20           desc = 
17890 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20  orderBy.desc;.. 
178a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
178b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
178c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
178d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17910 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
17920 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c   iColumn; /* Col
17930 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20  umn number */.. 
17940 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
17950 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72  te desc;   /* Tr
17960 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61  ue for DESC.  Fa
17970 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d  lse for ASC. */.
17980 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
179e0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
179f0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
17a00 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
17a10 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
17a20 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
17a30 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20  aint_usage..    
17a40 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
17a50 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
17a60 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
17a70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
17a80 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
17a90 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72  aintUsage constr
17aa0 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20  aintUsage..     
17ab0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
17ac0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
17ad0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17ae0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
17af0 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75  raintUsage != nu
17b00 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
17b10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17b20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20      argvIndex = 
17b30 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
17b40 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20  argvIndex;..    
17b50 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74              omit
17b60 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
17b70 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20  ge.omit;..      
17b80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17b90 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17be0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17bf0 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76   public int argv
17c00 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c  Index; /* if >0,
17c10 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70   constraint is p
17c20 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78  art of argv to x
17c30 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20  Filter */..     
17c40 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f     public byte o
17c50 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e  mit;     /* Do n
17c60 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66  ot code a test f
17c70 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69  or this constrai
17c80 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nt */..    }....
17c90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17ce0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
17cf0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
17d00 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
17d10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
17d20 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
17d30 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  info..    {..   
17d40 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a       /* Inputs *
17d50 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17d60 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  c int nConstrain
17d70 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20  t; /* Number of 
17d80 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73  entries in aCons
17d90 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20  traint */..     
17da0 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
17db0 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20   aConstraint;.. 
17dc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
17dd0 74 20 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20  t nOrderBy;..   
17de0 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
17df0 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20  tr aOrderBy;..  
17e00 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73        /* Outputs
17e10 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
17e20 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
17e30 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20  traintUsage;..  
17e40 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
17e50 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20   idxNum;        
17e60 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65     /* Number use
17e70 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68  d to identify th
17e80 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20  e index */..    
17e90 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
17ea0 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20  g idxStr;       
17eb0 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73   /* String, poss
17ec0 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  ibly obtained fr
17ed0 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  om sqlite3_mallo
17ee0 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  c */..        pu
17ef0 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46  blic int needToF
17f00 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72  reeIdxStr; /* Fr
17f10 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20  ee idxStr using 
17f20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
17f30 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20  f true */..     
17f40 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72     public int or
17f50 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20  derByConsumed;  
17f60 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75  /* True if outpu
17f70 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64  t is already ord
17f80 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ered */..       
17f90 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65   public double e
17fa0 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a  stimatedCost; /*
17fb0 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20   Estimated cost 
17fc0 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e  of using this in
17fd0 64 65 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23  dex */..    }..#
17fe0 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
17ff0 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  egion..  }....  
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18050 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
18060 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18070 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
18080 61 63 74 20 63 6c 61 73 73 20 43 72 69 74 69 63  act class Critic
18090 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70  alHandle : IDisp
180a0 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20  osable..  {..   
180b0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69   private bool _i
180c0 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72  sClosed;..    pr
180d0 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72 20 68  otected IntPtr h
180e0 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72  andle;....    pr
180f0 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61 6c  otected Critical
18100 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e  Handle(IntPtr in
18110 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
18120 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
18130 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64  handle = invalid
18140 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20  HandleValue;..  
18150 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
18160 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  false;..    }...
18170 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61  .    ~CriticalHa
18180 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  ndle()..    {.. 
18190 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
181a0 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  se);..    }.... 
181b0 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
181c0 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b  Cleanup()..    {
181d0 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73 43  ..      if (!IsC
181e0 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d  losed)..      {.
181f0 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69  .        this._i
18200 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
18210 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73  .        if (!Is
18220 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20  Invalid)..      
18230 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52    {..          R
18240 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
18250 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75  .          GC.Su
18260 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
18270 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
18280 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
18290 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
182a0 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20  oid Close()..   
182b0 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
182c0 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d  e(true);..    }.
182d0 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
182e0 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
182f0 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
18300 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
18310 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
18320 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
18330 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
18340 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20  osing)..    {.. 
18350 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d       Cleanup();.
18360 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
18370 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63 74  otected abstract
18380 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
18390 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72  dle();....    pr
183a0 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65 74  otected void Set
183b0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61  Handle(IntPtr va
183c0 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
183d0 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75     handle = valu
183e0 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
183f0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
18400 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
18410 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
18420 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
18430 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70  ;..      GC.Supp
18440 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
18450 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  s);..    }....  
18460 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
18470 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20  Closed..    {.. 
18480 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
18490 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a  n _isClosed; }..
184a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
184b0 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f  lic abstract boo
184c0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
184d0 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
184e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a      }....  }....
184f0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
18500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18550 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43   #region SQLiteC
18560 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
18570 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61  Class..    // Ha
18580 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61  ndles the unmana
18590 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69  ged database poi
185a0 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64  nter, and provid
185b0 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d  es finalization.
185c0 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20  .    // support 
185d0 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74  for it...    int
185e0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
185f0 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ss SQLiteConnect
18600 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  ionHandle : Crit
18610 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
18620 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  {..#if SQLITE_ST
18630 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46  ANDARD && !PLATF
18640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18650 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
18660 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
18670 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  void CloseConnec
18680 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20  tionCallback(.. 
18690 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
186a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
186b0 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
186c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  );....        in
186d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c  ternal static Cl
186e0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c  oseConnectionCal
186f0 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65  lback closeConne
18700 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20  ction =..       
18710 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
18720 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b  CloseConnection;
18730 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
18740 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
18790 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
187a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
187b0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
187c0 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
187d0 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
187e0 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
187f0 0a 0d 0a 20 20 20 20 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
18850 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61  ivate bool ownHa
18860 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
18870 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
188c0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
188d0 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
188e0 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
188f0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
18900 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b  e db)..        {
18910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
18920 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20   (db != null).. 
18930 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
18940 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
18950 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18960 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
18970 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d  k (db.syncRoot).
18980 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
18990 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
189a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
189b0 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65  return db.handle
189c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
189d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
189e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
189f0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
18a00 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
18a10 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
18a70 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
18a80 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e  nectionHandle(In
18a90 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77  tPtr db, bool ow
18aa0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
18ab0 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e        : this(own
18ac0 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
18ad0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
18ae0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18af0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
18b00 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
18b10 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
18b20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18b30 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48         this.ownH
18b40 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c  andle = ownHandl
18b50 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
18b60 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62      SetHandle(db
18b70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
18b80 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
18b90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18be0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
18bf0 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
18c00 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f  ionHandle(bool o
18c10 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
18c20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
18c30 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
18c40 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
18c50 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
18c60 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64       if (ownHand
18c70 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le)..           
18c80 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
18c90 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 55  .Increment(ref U
18ca0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
18cb0 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
18cc0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
18cd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
18ce0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18d30 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
18d40 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
18d50 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
18d60 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
18d70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18d80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
18d90 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
18da0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
18db0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18dd0 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74  (!ownHandle) ret
18de0 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
18df0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18e00 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
18e10 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
18e20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18e30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18e40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
18e50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
18e60 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
18e70 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
18e80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
18e90 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
18ea0 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  ero);....#if SQL
18eb0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
18ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
18ed0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
18ee0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
18ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f00 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69     closeConnecti
18f10 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
18f20 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndle);..#else.. 
18f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
18f40 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
18f50 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
18f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f70 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
18f80 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
18f90 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  his, localHandle
18fa0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
18fb0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
18fc0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
18fd0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
18fe0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
18ff0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
19010 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
19020 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
19030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19040 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
19050 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c  nection: {0}", l
19060 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
19070 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
19080 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
190a0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
190b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
190c0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
190d0 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
190e0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
190f0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
19100 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19120 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
19130 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
19140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19150 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19160 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
19170 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
19180 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61  nection(this, ha
19190 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
191a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
191b0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
191c0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
191d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
191e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
191f0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
19200 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
19210 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
19220 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
19230 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
19240 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
19250 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
19260 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
19270 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
19280 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
19290 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
192a0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
192b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
192c0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
192d0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
192e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
192f0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
19300 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
19310 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
19320 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
19330 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
19340 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
19350 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
19360 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
19370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19380 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
19390 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
193a0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
193b0 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
193c0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
193d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
193e0 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63      "CloseConnec
193f0 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70  tion: {0}, excep
19400 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
19410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19420 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
19430 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
19440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19460 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
19470 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19480 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
19490 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
194a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
194b0 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
194c0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
194d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
194e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
194f0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
19500 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
19510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19520 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19530 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
19540 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
19550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19560 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
19570 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
19580 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
19590 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
195a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
195b0 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
195c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
195d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19620 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
19630 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
19640 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
19650 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
19660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
19670 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
19680 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
19690 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
196a0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
196b0 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
196c0 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
196d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
196e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19730 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
19740 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20  ool OwnHandle.. 
19750 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19760 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
19770 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
19780 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19790 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
197a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
197b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
197c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
197d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
197e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
197f0 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
19800 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19810 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19820 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19830 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
19880 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
19890 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
198a0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
198b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
198c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
198d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
198e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
198f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19900 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
19910 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
19920 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19940 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
19950 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
19960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19970 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
19980 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
19990 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
199a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
199e0 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
199f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
19a00 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
19a10 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
19a20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
19a30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19a40 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
19a50 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
19a60 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
19a70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19a80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
19a90 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
19aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19ab0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
19ac0 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
19ad0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
19ae0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19b30 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
19b40 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
19b50 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
19b60 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
19b70 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
19b80 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
19b90 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a  te statements...
19ba0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
19bb0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
19bc0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
19bd0 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
19be0 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
19bf0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19c00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
19c10 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
19c20 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
19c30 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
19c40 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
19c50 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19ca0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
19cb0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
19cc0 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
19cd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19d20 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
19d30 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
19d40 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
19d50 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
19d60 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20  Handle stmt)..  
19d70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19d80 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d       if (stmt !=
19d90 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
19da0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
19db0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19dc0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
19dd0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74        lock (stmt
19de0 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
19df0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
19e00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19e10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
19e20 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a  n stmt.handle;..
19e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
19e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
19e60 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
19e70 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
19e80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19ed0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
19ee0 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d  nal SQLiteStatem
19ef0 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  entHandle(SQLite
19f00 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
19f10 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d   cnn, IntPtr stm
19f20 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
19f30 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
19f40 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
19f50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19f60 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
19f70 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
19f80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
19f90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19fa0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
19fb0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
19fc0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
19fd0 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20  le(stmt);..     
19fe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19ff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a040 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a050 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
1a060 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
1a070 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1a080 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
1a090 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
1a0a0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1a0b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1a0c0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
1a0d0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
1a0e0 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
1a0f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61  ativeMethods.sta
1a100 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23  tementCount);..#
1a110 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
1a120 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 20 20 20 20 70  ///....        p
1a180 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
1a190 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
1a1a0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
1a1b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
1a1c0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1a1d0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
1a1e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a1f0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1a200 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
1a210 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
1a220 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
1a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a240 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
1a250 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
1a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a270 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
1a280 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1a290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a2a0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1a2b0 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
1a2c0 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  t(cnn, localHand
1a2d0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
1a2e0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1a2f0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1a310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a320 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a330 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1a340 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
1a350 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1a360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a370 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
1a380 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ent: {0}", local
1a390 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
1a3a0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
1a3b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a3c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
1a3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a3e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a3f0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1a400 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1a410 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1a420 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1a430 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1a450 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
1a460 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1a470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a490 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1a4a0 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
1a4b0 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c  ement(cnn, handl
1a4c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1a4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1a4e0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
1a4f0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
1a500 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a510 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a520 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
1a530 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1a540 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1a550 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1a560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a570 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1a580 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
1a590 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1a5a0 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
1a5b0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
1a5c0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
1a5d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1a5e0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
1a5f0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1a600 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1a610 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
1a620 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
1a630 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
1a640 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
1a650 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
1a660 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1a670 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
1a680 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1a690 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1a6a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1a6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a6d0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1a6e0 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
1a6f0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1a700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a710 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
1a720 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
1a730 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
1a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a750 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
1a760 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a790 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1a7a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a7b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1a7c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1a7d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a7e0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
1a7f0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1a800 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a810 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1a820 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a830 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a850 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a860 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1a870 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
1a880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a890 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a8a0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1a8b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1a8c0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
1a8d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a8e0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1a8f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a900 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a950 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1a960 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1a970 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
1a980 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
1a990 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a9a0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
1a9b0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1a9c0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
1a9d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1a9e0 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ds.statementCoun
1a9f0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
1aa00 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1aa10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1aa60 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1aa70 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
1aa80 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
1aa90 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
1aaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1aab0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1aac0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1aad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1aae0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1aaf0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ab00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ab10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1ab20 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
1ab30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
1ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ab50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1ab60 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ab70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1abc0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1abd0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1abe0 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
1abf0 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
1ac00 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1ac10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ac20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1ac30 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1ac40 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1ac50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ac60 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
1ac70 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
1ac80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1ac90 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1aca0 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
1acb0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ad10 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
1ad20 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c  eBackupHandle Cl
1ad30 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76  ass..    // Prov
1ad40 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
1ad50 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
1ad60 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62  managed SQLite b
1ad70 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a  ackup objects...
1ad80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
1ad90 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
1ada0 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43  BackupHandle : C
1adb0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
1adc0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1add0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ade0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
1adf0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
1ae00 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
1ae10 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
1ae20 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1ae30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ae80 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
1ae90 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
1aea0 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
1aeb0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1af00 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1af10 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
1af20 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
1af30 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
1af40 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20   backup)..      
1af50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1af60 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e   if (backup != n
1af70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1af80 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1af90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1afa0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1afb0 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70      lock (backup
1afc0 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
1afd0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1afe0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1aff0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1b000 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b  n backup.handle;
1b010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b020 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b030 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b040 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
1b050 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
1b060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
1b0c0 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b  ernal SQLiteBack
1b0d0 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  upHandle(SQLiteC
1b0e0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1b0f0 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b  cnn, IntPtr back
1b100 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  up)..           
1b110 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
1b120 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1b130 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b140 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1b150 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1b160 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1b170 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b180 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e           this.cn
1b190 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20  n = cnn;..      
1b1a0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1b1b0 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20  dle(backup);..  
1b1c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b1d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b1e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b230 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
1b240 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
1b250 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1b260 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
1b270 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
1b280 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1b290 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1b2a0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
1b2b0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
1b2c0 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
1b2d0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63  ativeMethods.bac
1b2e0 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
1b2f0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
1b300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
1b360 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
1b370 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
1b380 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
1b390 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1b3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b3b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b3c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b3e0 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
1b3f0 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
1b400 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
1b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b420 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
1b430 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20  tr.Zero);....   
1b440 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b450 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
1b460 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b480 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1b490 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c  ishBackup(cnn, l
1b4a0 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a  ocalHandle);....
1b4b0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1b4c0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1b4d0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1b4e0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1b4f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b510 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1b520 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
1b530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b540 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
1b550 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f  Backup: {0}", lo
1b560 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
1b570 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1b580 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b590 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1b5a0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1b5b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b5c0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1b5d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1b5e0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1b5f0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1b600 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b620 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
1b630 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b650 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b660 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1b670 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63  teBase.FinishBac
1b680 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  kup(cnn, handle)
1b690 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b6a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1b6b0 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
1b6c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1b6d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1b6e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1b6f0 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
1b700 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1b710 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
1b720 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
1b730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b740 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
1b750 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b  tiveMethods.back
1b760 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
1b770 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1b790 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
1b7a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1b7b0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
1b7c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1b7d0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1b7e0 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1b7f0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
1b800 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1b810 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
1b820 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
1b830 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1b840 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1b850 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1b860 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1b870 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1b880 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8a0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
1b8b0 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
1b8c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b8d0 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69             "Fini
1b8e0 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65  shBackup: {0}, e
1b8f0 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
1b900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b910 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
1b920 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
1b930 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b940 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1b950 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1b960 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b980 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1b990 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b9a0 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
1b9b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1b9c0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1b9d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1b9f0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1ba00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1ba10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1ba30 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
1ba40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1ba50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ba60 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
1ba70 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1ba80 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
1ba90 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
1baa0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
1bab0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1bac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb10 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
1bb20 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
1bb30 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
1bb40 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
1bb50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1bb60 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
1bb70 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
1bb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bb90 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
1bba0 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43  eMethods.backupC
1bbb0 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
1bbc0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
1bbd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1bc20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
1bc30 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
1bc40 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
1bc50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
1bc60 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
1bc70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1bc80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bca0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1bcb0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1bcc0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bce0 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
1bcf0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1bd00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bd10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1bd20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1bd30 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
1bd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd80 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
1bd90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
1bda0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
1bdb0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
1bdc0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1bdd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1bde0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1bdf0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1be00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1be10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1be20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1be30 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
1be40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1be50 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
1be60 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
1be70 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..