System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 98bdd84f0af210634ed0e32329d65fb68c1369e4:


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 36 2e 64 6c 6c 22  Interop.096.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 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
109c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
109d0 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63  double sqlite3_c
109e0 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74  olumn_double(Int
109f0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10a00 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
10a10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10a20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10a30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10a40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10a50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10a60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10a70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10a80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10a90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10aa0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10ab0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10ac0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
10ad0 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20  lumn_int(IntPtr 
10ae0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
10af0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10b00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10b10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10b40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10b50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
10b60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10b70 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
10b80 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
10b90 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
10ba0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
10bb0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
10bc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10bd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10be0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10bf0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10c00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10c10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10c20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10c30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10c40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10c50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10c60 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
10c70 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
10c80 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  lob(IntPtr stmt,
10c90 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
10ca0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10cb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10cc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10cd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10cf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10d00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10d10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10d20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10d30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10d40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10d50 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
10d60 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72  umn_bytes(IntPtr
10d70 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10d80 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10d90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10da0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10db0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10dc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10dd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10de0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10df0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10e10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10e20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10e30 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
10e40 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31  e3_column_bytes1
10e50 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
10e60 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
10e70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10e80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10e90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10ea0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10eb0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10ec0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10ed0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10ef0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10f00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10f10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54   static extern T
10f20 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69  ypeAffinity sqli
10f30 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28  te3_column_type(
10f40 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
10f50 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
10f60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10f70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10f80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10f90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10fa0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10fb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10fc0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10fd0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10fe0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10ff0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11000 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11010 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11020 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
11030 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ation(IntPtr db,
11040 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
11050 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
11060 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
11070 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29  eCollation func)
11080 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11090 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
110a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
110b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
110c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
110d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
110e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
110f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11100 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11110 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11120 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11130 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
11140 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
11150 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
11160 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11170 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11180 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11190 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
111a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
111b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
111c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
111d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
111e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
111f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11200 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11210 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
11220 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62  lite3_value_blob
11230 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
11240 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11250 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11260 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11270 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11280 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11290 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
112a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
112b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
112c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
112d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
112e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
112f0 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
11300 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 70  e_bytes(IntPtr p
11310 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11320 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11330 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11340 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11350 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11360 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11370 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11380 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11390 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
113a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
113b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
113c0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
113d0 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36  e3_value_bytes16
113e0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
113f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11400 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11410 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11420 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11430 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11440 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11450 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
11460 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11470 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
11480 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
11490 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64  IntPtr p);..#end
114a0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
114b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
114c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
114d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
114e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
114f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11500 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11510 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11520 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11530 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11540 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11550 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
11560 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74  e3_value_int(Int
11570 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
11580 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11590 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
115a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
115b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
115c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
115d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
115e0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
115f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11600 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c  long sqlite3_val
11610 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  ue_int64(IntPtr 
11620 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
11630 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11640 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11650 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11660 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11670 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11690 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
116a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
116b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
116c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
116d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
116e0 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
116f0 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28  ite3_value_type(
11700 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
11710 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11720 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11730 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11740 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11750 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11770 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11790 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
117a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
117b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
117c0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
117d0 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63  lt_blob(IntPtr c
117e0 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
117f0 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
11800 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
11810 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
11820 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11830 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11850 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11860 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11870 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11890 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
118a0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
118b0 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63  _double(IntPtr c
118c0 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76  ontext, double v
118d0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
118e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
118f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11900 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11910 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11920 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11930 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11940 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11950 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11960 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11970 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11980 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11990 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
119a0 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74  result_error(Int
119b0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
119c0 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20  e[] strErr, int 
119d0 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
119e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
119f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11a00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11a10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11a20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11a30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11a40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11a50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11a60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11a70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11a80 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
11a90 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
11aa0 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72  rror_code(IntPtr
11ab0 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65   context, SQLite
11ac0 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
11ad0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11ae0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11af0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11b00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11b20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11b30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11b40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11b50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11b60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11b70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11b80 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11b90 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
11ba0 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f  toobig(IntPtr co
11bb0 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
11bc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11bd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11be0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11bf0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11c00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11c10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11c20 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11c30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11c40 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11c50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11c60 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11c70 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
11c80 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50  error_nomem(IntP
11c90 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
11ca0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11cb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11cc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11cd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11cf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11d00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11d10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11d20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11d30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11d40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11d50 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
11d60 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74  sult_value(IntPt
11d70 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
11d80 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  r value);....#if
11d90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11da0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11db0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11dc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11dd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11de0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11df0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11e00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11e10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11e20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11e30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11e40 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
11e50 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74  t_zeroblob(IntPt
11e60 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
11e70 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
11e80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11e90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11ea0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11eb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11ec0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11ed0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11ee0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11ef0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11f00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11f10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11f20 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
11f30 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
11f40 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
11f50 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
11f60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11f70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11f80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11f90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11fb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11fc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
11fd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11fe0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11ff0 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28  e3_result_int64(
12000 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
12010 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
12020 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
12030 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12040 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12050 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12060 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12070 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12080 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12090 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
120a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
120b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
120c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
120d0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
120e0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c  lite3_result_nul
120f0 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  l(IntPtr context
12100 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12110 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12120 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12130 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12140 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12150 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12160 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12170 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12180 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12190 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
121a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
121b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
121c0 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28  te3_result_text(
121d0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
121e0 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
121f0 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nLen, IntPtr p
12200 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
12210 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12220 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12230 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12240 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12250 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12260 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12270 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12290 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
122a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
122b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
122c0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61  IntPtr sqlite3_a
122d0 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74  ggregate_context
122e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
122f0 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d   int nBytes);...
12300 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12310 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12320 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12330 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12340 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12350 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12360 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
12370 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
12380 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
12390 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
123a0 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
123b0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
123c0 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
123d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
123e0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
123f0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
12400 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50  bind_text16(IntP
12410 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
12420 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ex, string value
12430 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
12440 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
12450 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12460 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12470 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12480 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12490 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
124a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
124b0 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
124c0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
124d0 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
124e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
124f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
12500 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
12510 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
12520 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12530 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
12540 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
12550 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ror16(IntPtr con
12560 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
12570 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  Name, int nLen);
12580 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12590 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
125a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
125b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
125c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
125d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
125e0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
125f0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
12600 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
12610 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12620 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
12630 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
12640 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
12650 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12660 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
12670 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
12680 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ext16(IntPtr con
12690 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
126a0 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  Name, int nLen, 
126b0 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
126c0 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  d);....#if INTER
126d0 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45  OP_CODEC || INTE
126e0 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d  ROP_INCLUDE_SEE.
126f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12700 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12710 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12720 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12730 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12740 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12750 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12760 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12770 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12780 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12790 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
127a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
127b0 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e  e sqlite3_key(In
127c0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
127d0 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
127e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
127f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12800 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12820 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12830 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12840 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12850 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12860 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12870 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12880 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12890 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
128a0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
128b0 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
128c0 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
128d0 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  eylen);..#endif.
128e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
128f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12900 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12910 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12930 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12940 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12950 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12960 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12970 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12980 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12990 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
129a0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
129b0 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
129c0 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
129d0 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
129e0 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
129f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12a00 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12a10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12a20 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12a30 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12a40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12a50 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12a60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12a70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12a80 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12a90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12aa0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
12ab0 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
12ac0 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
12ad0 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
12ae0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
12af0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12b00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12b10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12b20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12b30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12b40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12b50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12b60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12b70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12b80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12b90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12ba0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12bb0 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
12bc0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
12bd0 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
12be0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
12bf0 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
12c00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12c10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12c20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12c30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12c40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12c50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12c60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12c70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12c80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12c90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12ca0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12cb0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
12cc0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
12cd0 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
12ce0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
12cf0 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
12d00 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
12d10 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
12d20 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
12d30 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
12d40 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
12d50 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
12d60 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
12d70 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
12d80 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
12d90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12da0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12dc0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
12dd0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
12de0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
12df0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12e00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12e10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12e30 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
12e40 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
12e50 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
12e60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12e70 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12e80 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12e90 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
12ea0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
12eb0 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
12ec0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12ed0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12ee0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ef0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
12f00 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
12f10 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
12f20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12f30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12f40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12f50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12f60 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
12f70 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
12f80 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
12f90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12fa0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12fb0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12fc0 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
12fd0 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
12fe0 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
12ff0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13000 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13010 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13020 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
13030 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
13040 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
13050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13060 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13070 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13080 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
130a0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
130b0 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
130c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
130d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
130e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
130f0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
13100 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
13110 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
13120 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
13130 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
13140 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
13150 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13160 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13180 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13190 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
131a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
131b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
131c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
131d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
131e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
131f0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13200 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
13210 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
13220 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
13230 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
13240 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
13250 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13260 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13280 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
132a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
132b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
132c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
132d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
132e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
132f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13300 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
13310 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
13320 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
13330 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13340 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13350 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13360 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13370 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13380 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13390 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
133a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
133b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
133c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
133d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
133e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
133f0 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
13400 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
13410 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13420 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13430 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13440 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13460 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13470 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13480 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13490 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
134a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
134b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
134c0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
134d0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
134e0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
134f0 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
13500 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13510 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13520 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13530 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13540 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13550 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13560 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13570 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13580 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13590 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
135a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
135b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
135c0 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72  next_stmt(IntPtr
135d0 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74   db, IntPtr stmt
135e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
135f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13600 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13630 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13640 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13650 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13660 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13680 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13690 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
136a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
136b0 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62  xec(IntPtr db, b
136c0 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e  yte[] strSql, In
136d0 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c  tPtr pvCallback,
136e0 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c   IntPtr pvParam,
136f0 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d   ref IntPtr errM
13700 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
13710 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13720 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13730 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13740 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13750 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13760 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13770 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13780 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13790 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
137a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
137b0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
137c0 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
137d0 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b  ory(int nBytes);
137e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
137f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13800 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13820 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13830 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13840 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13850 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13870 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13880 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13890 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
138a0 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
138b0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
138c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
138d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
138e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
138f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13900 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13910 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13920 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13930 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13940 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13950 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13960 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13970 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13980 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
13990 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
139a0 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
139b0 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
139c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
139d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
139e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
139f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13a00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13a10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13a20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13a30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13a40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13a50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13a60 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13a70 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13a80 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
13a90 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
13aa0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13ab0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13ad0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13ae0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13af0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13b00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13b10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13b20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13b30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13b40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13b50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13b60 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_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 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
13c40 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
13c50 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
13c60 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
13c70 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
13c80 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
13c90 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
13ca0 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
13cb0 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
13cc0 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
13cd0 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
13ce0 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
13cf0 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
13d00 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
13d10 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20  e string, and.. 
13d20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20     // depend on 
13d30 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f  the caller to fo
13d40 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e  rmat the string.
13d50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13d60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13d70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13d80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13d90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13da0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13db0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13dc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13dd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13de0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13df0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13e00 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
13e10 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  log(SQLiteErrorC
13e20 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79  ode iErrCode, by
13e30 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a  te[] zFormat);..
13e40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13e50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13e60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13e70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13e80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13e90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13ea0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13eb0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13ec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13ed0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13ee0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13ef0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
13f00 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  de sqlite3_file_
13f10 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64  control(IntPtr d
13f20 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d  b, byte[] zDbNam
13f30 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
13f40 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20  r pArg);....#if 
13f50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13f60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13f70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13f80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13f90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13fa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13fb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13fc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13fd0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13fe0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13ff0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
14000 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  Ptr sqlite3_back
14010 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64  up_init(IntPtr d
14020 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44  estDb, byte[] zD
14030 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20  estName, IntPtr 
14040 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d  sourceDb, byte[]
14050 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a   zSourceName);..
14060 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14070 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14080 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14090 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
140a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
140b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
140c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
140d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
140e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
140f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14100 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14110 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14120 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
14130 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61  p_step(IntPtr ba
14140 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29  ckup, int nPage)
14150 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14160 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14170 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14180 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14190 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
141a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
141b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
141c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
141d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
141e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
141f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14200 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14210 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69  3_backup_remaini
14220 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ng(IntPtr backup
14230 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14250 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14270 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14280 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14290 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
142a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
142b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
142c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
142d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
142e0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
142f0 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f  e3_backup_pageco
14300 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75  unt(IntPtr backu
14310 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
14320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14330 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14340 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14350 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14360 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14370 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14380 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
143a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
143b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
143c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
143d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
143e0 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74  declare_vtab(Int
143f0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
14400 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  SQL);....#if !PL
14410 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14420 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14430 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14440 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14450 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14460 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14470 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14480 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14490 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
144a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
144b0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
144c0 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
144d0 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20  (IntPtr format, 
144e0 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20  __arglist);..   
144f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14500 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49     // SQLite API
14510 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20   calls that are 
14520 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c  provided by "wel
14530 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69  l-known" extensi
14540 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20  ons that may be 
14550 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20  statically..    
14560 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74  // linked with t
14570 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
14580 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75  ative library cu
14590 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d  rrently in use..
145a0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74  .    #region ext
145b0 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70  ension sqlite ap
145c0 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54  i calls..#if INT
145d0 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
145e0 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  LE..#if !PLATFOR
145f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14600 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14610 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14620 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14630 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14640 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14650 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14660 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14670 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14680 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14690 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
146a0 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
146b0 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  sable_module(Int
146c0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
146d0 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33  ame, ref sqlite3
146e0 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  _module module, 
146f0 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
14700 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ta, xDestroyModu
14710 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le xDestroy);...
14720 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14730 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14740 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14750 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14760 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14770 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14780 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14790 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
147a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
147b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
147c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
147d0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64  n void sqlite3_d
147e0 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e  ispose_module(In
147f0 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a  tPtr pModule);..
14800 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
14810 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14860 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14870 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20   #region sqlite 
14880 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c  interop api call
14890 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  s (.NET Compact 
148a0 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d  Framework only).
148b0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
148c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
148d0 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
148e0 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RD..    [DllImpo
148f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14900 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14910 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
14920 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
14930 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72  sert_rowid_inter
14940 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65  op(IntPtr db, re
14950 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a  f long rowId);..
14960 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14970 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
14980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14990 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
149a0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
149b0 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c  ed_interop(ref l
149c0 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
149d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
149e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
149f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14a00 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14a10 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
14a20 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
14a30 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
14a40 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
14a50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14a60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14a70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14a80 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14a90 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14aa0 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
14ab0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14ac0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14ad0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
14ae0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14af0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
14b00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14b10 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14b20 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14b30 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
14b40 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
14b50 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
14b60 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
14b70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14b80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
14b90 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
14ba0 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
14bb0 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74  erop")]..    int
14bc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14bd0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
14be0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
14bf0 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  _uint64_interop(
14c00 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14c10 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e   index, ref ulon
14c20 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
14c30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14c40 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14c50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14c60 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14c70 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
14c80 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
14c90 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14ca0 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
14cb0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14cc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14cd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14ce0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14cf0 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
14d00 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  n_int64_interop(
14d10 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14d20 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
14d30 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
14d40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14d50 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
14d60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14d70 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
14d80 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
14d90 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
14da0 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
14db0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14dc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14dd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14de0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14df0 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
14e00 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
14e10 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49 6e 74  ntPtr p, ref Int
14e20 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
14e30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14e40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14e50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14e60 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14e70 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
14e80 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14e90 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75  context, ref dou
14ea0 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
14eb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14ec0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14ed0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14ee0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14ef0 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
14f00 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14f10 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
14f20 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
14f30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14f40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14f50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14f60 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14f70 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
14f80 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
14f90 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
14fa0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
14fb0 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70  r name, IntPtr p
14fc0 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72  Module, int iVer
14fd0 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43  sion, xCreate xC
14fe0 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
14ff0 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
15000 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  t, xBestIndex xB
15010 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f  estIndex, xDisco
15020 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
15030 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  t,..        xDes
15040 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78  troy xDestroy, x
15050 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f  Open xOpen, xClo
15060 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74  se xClose, xFilt
15070 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20  er xFilter,..   
15080 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74       xNext xNext
15090 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f  , xEof xEof, xCo
150a0 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52  lumn xColumn, xR
150b0 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70  owId xRowId, xUp
150c0 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20  date xUpdate,.. 
150d0 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42         xBegin xB
150e0 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e  egin, xSync xSyn
150f0 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  c, xCommit xComm
15100 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  it, xRollback xR
15110 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
15120 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20    xFindFunction 
15130 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78  xFindFunction, x
15140 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20  Rename xRename, 
15150 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
15160 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  point,..        
15170 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
15180 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  e, xRollbackTo x
15190 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50  RollbackTo, IntP
151a0 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d  tr pClientData,.
151b0 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
151c0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
151d0 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
151e0 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
151f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15200 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
15210 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
15220 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
15230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
15280 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
15290 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
152a0 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
152b0 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
152c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
152d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
152e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
152f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
15300 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15310 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
15320 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
15330 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
15340 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
15350 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
15360 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
15370 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
15380 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
15390 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
153a0 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
153b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
153c0 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
153d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
153e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15420 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15430 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15440 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15450 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
15460 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
15470 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15480 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
15490 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
154a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
154b0 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
154c0 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
154d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
154e0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
154f0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
15500 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
15510 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
15520 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
15530 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
15540 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
15550 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
155a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
155b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
155c0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
155d0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
155e0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
155f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15600 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15610 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15620 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64  rorCode xBestInd
15630 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ex(..        Int
15640 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
15650 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
15660 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
15670 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
156c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
156d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
156e0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
156f0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
15700 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15710 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
15720 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
15730 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
15740 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
15750 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
15760 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
15770 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157c0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
157d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
157e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
157f0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
15800 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
15810 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15820 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
15830 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
15840 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
15850 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  roy(..        In
15860 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
15870 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
158b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
158d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
158e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
158f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
15900 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
15910 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15930 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
15940 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
15950 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  pen(..        In
15960 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
15970 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
15980 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
15990 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
159f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15a00 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
15a10 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
15a20 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
15a30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15a40 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
15a50 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
15a60 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
15a70 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
15a80 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
15a90 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
15af0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15b00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
15b10 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
15b20 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
15b30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15b40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15b50 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
15b60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
15b70 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
15b80 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
15b90 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78  .        int idx
15ba0 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Num,..        In
15bb0 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20  tPtr idxStr,..  
15bc0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
15bd0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15be0 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  argv..    );....
15bf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15c40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15c50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15c60 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
15c70 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
15c80 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
15c90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15ca0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15cb0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15cc0 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a  rorCode xNext(..
15cd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
15ce0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
15cf0 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d40 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
15d50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15d60 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
15d70 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
15d80 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
15d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15da0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
15db0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45   delegate int xE
15dc0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  of(..        Int
15dd0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
15de0 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
15e30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15e40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15e50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
15e60 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
15e70 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
15e80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15e90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
15ea0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
15eb0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
15ec0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
15ed0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
15ee0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15ef0 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
15f00 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
15f10 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
15f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15f70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15f80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15f90 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
15fa0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
15fb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15fc0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
15fd0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
15fe0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15ff0 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
16000 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
16010 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
16020 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
16030 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16080 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
16090 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
160a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
160b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
160c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
160d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
160e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
160f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
16100 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
16110 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  date(..        I
16120 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
16130 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
16140 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16150 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
16160 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
16170 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
161d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
161e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
161f0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
16200 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
16210 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16220 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
16230 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
16240 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16250 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
16260 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
16270 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
162d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
162e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
162f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16300 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16310 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16320 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16330 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16340 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16350 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
16360 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
16370 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
163d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
163e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
163f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16400 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16410 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16420 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16430 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16440 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16450 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
16460 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16470 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
164d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
164e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
164f0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16500 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16520 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16530 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16540 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
16550 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
16560 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16570 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
16580 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
165d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
165e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
165f0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16600 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16610 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16620 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16630 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16640 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e  elegate int xFin
16650 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
16660 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16670 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e  ,..        int n
16680 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Arg,..        In
16690 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
166a0 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
166b0 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
166c0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
166d0 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d  ntPtr pUserData.
166e0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
16740 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16750 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16760 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
16770 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16780 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16790 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
167a0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
167b0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
167c0 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
167d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
167e0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
167f0 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d  tr zNew..    );.
16800 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16850 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
16860 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16870 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
16880 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
16890 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
168a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
168b0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
168c0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
168d0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
168e0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
168f0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
16900 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
16910 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
16920 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16970 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16980 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16990 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
169a0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
169b0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
169c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
169d0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
169e0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
169f0 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
16a00 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
16a10 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
16a20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
16a30 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
16a40 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16a90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16aa0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16ab0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
16ac0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
16ad0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16ae0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16af0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
16b00 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
16b10 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
16b20 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
16b30 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
16b40 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
16b50 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
16bb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16bc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16bd0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16be0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16bf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16c00 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16c10 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16c20 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
16c30 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  yModule(IntPtr p
16c40 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65  ClientData);..#e
16c50 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
16c60 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16cb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
16cc0 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74  region Native St
16cd0 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e  ructures..#if IN
16ce0 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
16cf0 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  BLE..    [Struct
16d00 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
16d10 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
16d20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
16d30 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
16d40 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
16d50 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56     public int iV
16d60 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
16d70 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20   public xCreate 
16d80 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20  xCreate;..      
16d90 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63    public xConnec
16da0 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
16db0 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73       public xBes
16dc0 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
16dd0 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  x;..        publ
16de0 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  ic xDisconnect x
16df0 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  Disconnect;..   
16e00 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73       public xDes
16e10 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a  troy xDestroy;..
16e20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
16e30 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
16e40 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f       public xClo
16e50 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
16e60 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74      public xFilt
16e70 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
16e80 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78       public xNex
16e90 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20  t xNext;..      
16ea0 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45    public xEof xE
16eb0 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  of;..        pub
16ec0 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  lic xColumn xCol
16ed0 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
16ee0 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77  blic xRowId xRow
16ef0 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  Id;..        pub
16f00 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64  lic xUpdate xUpd
16f10 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
16f20 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
16f30 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  in;..        pub
16f40 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
16f50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
16f60 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
16f70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
16f80 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  c xRollback xRol
16f90 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  lback;..        
16fa0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
16fb0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
16fc0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
16fd0 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  lic xRename xRen
16fe0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ame;..        /*
16ff0 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f   The methods abo
17000 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f  ve are in versio
17010 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74  n 1 of the sqlit
17020 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
17030 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54      * object.  T
17040 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66  hose below are f
17050 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  or version 2 and
17060 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20   greater. */..  
17070 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61        public xSa
17080 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
17090 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
170a0 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65  lic xRelease xRe
170b0 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  lease;..        
170c0 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
170d0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
170e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17130 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17140 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
17150 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
17160 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
17170 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
17180 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
17190 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
171a0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d  IntPtr pModule;.
171b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
171c0 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20  int nRef; /* NO 
171d0 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a  LONGER USED */..
171e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
171f0 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a  ntPtr zErrMsg;..
17200 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17260 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
17270 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
17280 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
17290 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
172a0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
172b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
172c0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
172d0 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
172e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
172f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17330 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
17340 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
17350 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
17360 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
17370 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
17380 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
17390 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
173a0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
173b0 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
173c0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
173d0 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
173e0 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
173f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
17400 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
17410 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17420 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
17430 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
17440 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17450 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
17460 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
17470 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
17480 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
17490 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
174a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
174b0 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
174c0 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
174d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
174e0 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
174f0 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
17500 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
17510 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
17520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
17580 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
17590 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
175a0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
175b0 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
175c0 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
175d0 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20   usable;..      
175e0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65    public int iTe
175f0 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
17600 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
17660 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
17670 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
17680 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17690 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
176a0 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
176b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
176c0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
176d0 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
176e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
176f0 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
17700 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
17710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
17720 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
17730 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
17740 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
17750 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
17760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17770 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
17780 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
17790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
177a0 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
177b0 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
177c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
177d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17820 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
17830 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
17840 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65   /* Column numbe
17850 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
17860 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
17870 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
17880 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
17890 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
178a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
178b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178c0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
17900 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
17910 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
17920 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
17930 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
17940 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
17950 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
17960 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
17970 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
17980 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
17990 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
179a0 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
179b0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
179c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
179d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
179e0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
179f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
17a00 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
17a10 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
17a20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17a30 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
17a40 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
17a50 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
17a60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
17a70 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
17a80 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
17a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
17aa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17ab0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17b00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
17b10 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
17b20 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
17b30 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
17b40 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
17b50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17b60 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
17b70 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
17b80 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
17b90 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
17ba0 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
17c00 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
17c10 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
17c20 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
17c30 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
17c40 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
17c50 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
17c60 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
17c70 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f    public int nCo
17c80 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d  nstraint; /* Num
17c90 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
17ca0 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  n aConstraint */
17cb0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17cc0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
17cd0 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
17ce0 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42  blic int nOrderB
17cf0 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y;..        publ
17d00 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72  ic IntPtr aOrder
17d10 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  By;..        /* 
17d20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20  Outputs */..    
17d30 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
17d40 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r aConstraintUsa
17d50 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ge;..        pub
17d60 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20  lic int idxNum; 
17d70 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
17d80 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e  ber used to iden
17d90 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a  tify the index *
17da0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17db0 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b  c string idxStr;
17dc0 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e          /* Strin
17dd0 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61  g, possibly obta
17de0 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
17df0 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20  3_malloc */..   
17e00 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
17e10 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
17e20 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72  ; /* Free idxStr
17e30 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
17e40 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f  ree() if true */
17e50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17e60 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
17e70 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69  umed;  /* True i
17e80 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
17e90 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a  ady ordered */..
17ea0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64          public d
17eb0 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
17ec0 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65  ost; /* Estimate
17ed0 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
17ee0 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20  this index */.. 
17ef0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
17f00 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
17f10 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
17f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
17f70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17f80 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
17f90 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
17fa0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
17fb0 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
17fc0 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
17fd0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
17fe0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
17ff0 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
18000 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
18010 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
18020 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
18030 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
18040 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
18050 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
18060 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
18070 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
18080 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
18090 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
180a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
180b0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
180c0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
180d0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
180e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
180f0 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
18100 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18110 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
18120 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
18130 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
18140 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
18150 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
18160 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
18170 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
18180 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
18190 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
181a0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
181b0 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
181c0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
181d0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
181e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
181f0 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
18200 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
18210 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
18220 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
18230 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
18240 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
18250 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
18260 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
18270 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
18280 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
18290 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
182a0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
182b0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
182c0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
182d0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
182e0 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
182f0 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
18300 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
18310 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
18320 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
18330 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
18340 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
18350 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
18360 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
18370 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
18380 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
18390 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
183a0 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
183b0 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
183c0 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
183d0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
183e0 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
183f0 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
18400 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d    }....#endif...
18410 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
18420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
18470 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
18480 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
18490 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
184a0 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
184b0 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
184c0 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
184d0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
184e0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
184f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
18500 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
18510 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
18520 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
18530 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
18540 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
18550 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18560 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18570 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
18580 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
18590 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
185a0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
185b0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
185c0 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
185d0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
185e0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
185f0 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
18600 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
18610 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
18620 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
18630 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
18640 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
18650 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
186b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
186c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
186d0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
186e0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
186f0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
18700 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
18710 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18760 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
18770 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
18780 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
187d0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
187e0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
187f0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
18800 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
18810 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
18820 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18830 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
18840 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
18850 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
18860 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18870 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
18880 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
18890 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
188a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
188b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
188c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
188d0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
188e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
188f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18900 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
18910 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
18920 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18930 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18980 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
18990 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
189a0 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
189b0 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
189c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
189d0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
189e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
189f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18a00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
18a10 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
18a20 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
18a30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18a50 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
18a60 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
18a70 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
18a80 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
18a90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18aa0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18af0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18b00 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
18b10 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
18b20 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
18b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
18b40 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
18b50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
18b60 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
18b70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18b80 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
18b90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
18ba0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
18bb0 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69  t(ref UnsafeNati
18bc0 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
18bd0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
18be0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
18bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
18c50 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
18c60 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
18c70 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
18c80 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
18c90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18ca0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
18cb0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
18cc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
18cd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18ce0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
18cf0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
18d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
18d10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
18d20 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
18d30 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
18d40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18d50 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
18d60 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
18d70 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
18d80 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
18d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18da0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
18db0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
18dc0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
18dd0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
18de0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
18df0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
18e00 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
18e10 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
18e20 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
18e30 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
18e40 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
18e50 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
18e60 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
18e70 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
18e80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
18e90 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
18ea0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
18eb0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
18ec0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
18ed0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
18ee0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
18ef0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
18f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
18f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18f20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
18f30 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
18f40 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
18f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
18f60 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
18f70 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
18f80 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
18f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18fa0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
18fb0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
18fc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
18fe0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
18ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19000 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
19010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19030 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
19040 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
19050 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
19060 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19080 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
19090 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
190a0 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
190b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
190c0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
190d0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
190e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
190f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
19100 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
19110 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
19120 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
19130 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
19140 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
19150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19160 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
19170 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69  Methods.connecti
19180 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
19190 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
191a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
191b0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
191c0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
191d0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
191e0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
191f0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19200 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
19210 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
19220 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
19230 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
19240 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
19250 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
19260 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
19270 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
19280 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
19290 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
192a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
192b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
192c0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
192d0 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
192e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
192f0 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
19300 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
19310 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
19320 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
19330 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
19340 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
19350 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
19360 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19370 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
19380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
193a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
193b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
193c0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
193d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
193e0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
193f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19410 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
19420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
19430 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19450 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
19460 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
19470 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19480 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
19490 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
194a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
194b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
194c0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
194d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
194e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
19540 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
19550 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
19560 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
19570 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19580 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
19590 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
195a0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
195b0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
195c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
195d0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20  ectionCount);.. 
195e0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
195f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
19650 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61  ublic bool OwnHa
19660 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
19670 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
19680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19690 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
196a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
196b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
196c0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
196d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
196e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
196f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19700 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65  return ownHandle
19710 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19720 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
19730 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
19740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
197a0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
197b0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
197c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
197d0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
197e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
197f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19800 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
19810 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
19820 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
19830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19850 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
19860 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
19870 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
19880 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19890 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
198a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
19900 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
19910 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
19920 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
19930 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
19940 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19950 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
19960 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
19970 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
19980 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
199a0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
199b0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
199c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
199d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
199e0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
199f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
19a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
19a50 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  on SQLiteStateme
19a60 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  ntHandle Class..
19a70 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
19a80 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
19a90 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
19aa0 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d  ed SQLite statem
19ab0 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ents...    inter
19ac0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
19ad0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
19ae0 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
19af0 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
19b00 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
19b10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19b20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
19b30 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
19b40 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
19b50 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
19b60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
19b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
19bc0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
19bd0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
19be0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19c40 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
19c50 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
19c60 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74   IntPtr(SQLiteSt
19c70 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74  atementHandle st
19c80 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  mt)..        {..
19c90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19ca0 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  stmt != null).. 
19cb0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
19cc0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
19cd0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
19cf0 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74  k (stmt.syncRoot
19d00 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
19d10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d30 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61    return stmt.ha
19d40 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
19d50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19d60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19d70 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
19d80 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
19d90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19de0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19df0 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
19e00 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
19e10 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
19e20 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
19e30 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  Ptr stmt)..     
19e40 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
19e50 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
19e60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19e70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19e80 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
19e90 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
19ea0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
19ec0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
19ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ee0 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b  SetHandle(stmt);
19ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
19f00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
19f10 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19f60 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
19f70 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
19f80 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
19f90 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
19fa0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
19fb0 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
19fc0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19fd0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
19fe0 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
19ff0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1a000 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1a010 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1a020 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
1a030 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1a040 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a090 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
1a0a0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
1a0b0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
1a0c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a0d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1a0e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1a0f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a100 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1a110 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1a120 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
1a130 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
1a140 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
1a150 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
1a160 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
1a170 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
1a180 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
1a190 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
1a1a0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1a1b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a1c0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
1a1d0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
1a1e0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
1a1f0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1a200 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1a210 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1a220 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1a230 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a250 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1a260 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
1a270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a280 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
1a290 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22  eStatement: {0}"
1a2a0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
1a2b0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a2d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a2e0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1a2f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a300 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1a310 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
1a320 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1a330 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
1a340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a360 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
1a370 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1a380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a390 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3b0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
1a3c0 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
1a3d0 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3f0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1a400 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a420 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a430 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1a440 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1a450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a460 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1a470 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1a480 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1a490 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1a4a0 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f  hods.statementCo
1a4b0 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
1a4c0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1a4d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a4e0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
1a4f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1a500 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1a510 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1a520 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1a530 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
1a540 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
1a550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1a560 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
1a570 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
1a580 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1a590 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1a5a0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1a5b0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1a5c0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1a5d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1a5f0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
1a600 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a620 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1a630 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
1a640 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1a650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a660 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1a670 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1a680 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1a690 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a6a0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1a6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6d0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1a6e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a6f0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1a700 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1a710 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a720 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1a740 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1a750 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1a760 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1a780 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1a790 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1a7a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a7b0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1a7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1a7d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1a7e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1a7f0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1a800 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1a810 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a860 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1a870 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1a880 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1a890 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1a8a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a8b0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1a8c0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1a8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a8e0 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1a8f0 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d  veMethods.statem
1a900 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  entCount);..    
1a910 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
1a920 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1a980 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
1a990 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
1a9a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a9b0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
1a9c0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1a9d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a9e0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1a9f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1aa00 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1aa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1aa20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa30 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
1aa40 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
1aa50 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1aa60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1aa70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1aa80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
1aae0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
1aaf0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
1ab00 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
1ab10 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1ab20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ab30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1ab40 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1ab50 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1ab60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ab70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ab80 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
1ab90 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
1aba0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1abb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
1abc0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1abd0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1ac30 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  n SQLiteBackupHa
1ac40 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
1ac50 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
1ac60 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
1ac70 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
1ac80 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a  QLite backup obj
1ac90 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
1aca0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
1acb0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
1acc0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
1acd0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
1ace0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1acf0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ad00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
1ad10 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
1ad20 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
1ad30 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
1ad40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ad50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1ada0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
1adb0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
1adc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1ae20 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
1ae30 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
1ae40 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75  tPtr(SQLiteBacku
1ae50 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d  pHandle backup).
1ae60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1ae70 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b          if (back
1ae80 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  up != null)..   
1ae90 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1aea0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aeb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1aec0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1aed0 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74  (backup.syncRoot
1aee0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1aef0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af10 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e    return backup.
1af20 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
1af30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1af40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1af50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1af60 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
1af70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1af80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1afd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
1afe0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
1aff0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1b000 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
1b010 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  tr backup)..    
1b020 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
1b030 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1b040 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1b050 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b060 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1b070 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1b080 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b0a0 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
1b0b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b0c0 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75   SetHandle(backu
1b0d0 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  p);..           
1b0e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1b0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b140 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1b150 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ate SQLiteBackup
1b160 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
1b170 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
1b180 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1b190 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
1b1a0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1b1b0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1b1c0 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
1b1d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b1e0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b1f0 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
1b200 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1b210 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b260 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b270 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
1b280 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
1b290 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
1b2a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b2b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1b2c0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
1b2d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b2e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1b2f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
1b300 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
1b310 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
1b320 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b330 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
1b340 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
1b350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b360 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
1b370 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1b380 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1b390 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1b3a0 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
1b3b0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
1b3c0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
1b3d0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1b3e0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1b3f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1b400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b410 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b420 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1b430 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
1b440 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b460 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
1b470 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
1b480 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1b490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b4a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b4b0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1b4c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b4e0 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
1b4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b500 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1b510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b520 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b530 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
1b540 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1b550 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1b560 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b580 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
1b590 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
1b5a0 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
1b5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5c0 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
1b5d0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1b5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1b5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b600 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
1b610 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1b630 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1b640 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
1b650 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
1b660 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1b670 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
1b680 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
1b690 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
1b6a0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
1b6b0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1b6c0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
1b6d0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
1b6e0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
1b6f0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1b700 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1b710 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
1b720 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
1b730 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
1b740 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1b750 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
1b760 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1b770 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1b790 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1b7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b7b0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
1b7c0 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
1b7d0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7f0 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
1b800 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
1b810 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b830 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
1b840 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1b850 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1b870 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1b880 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b890 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1b8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
1b8c0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
1b8d0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1b8e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b8f0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1b900 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1b910 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1b920 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b940 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
1b950 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
1b960 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b970 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1b980 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1b990 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1b9a0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
1b9b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1b9c0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1b9d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b9e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1ba30 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1ba40 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1ba50 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
1ba60 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1ba70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ba80 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1ba90 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1baa0 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
1bab0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1bac0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
1bad0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1bae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb30 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1bb40 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
1bb50 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
1bb60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1bb70 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
1bb80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1bb90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bba0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1bbb0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1bbc0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1bbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bbe0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bbf0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1bc00 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
1bc10 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1bc20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bc30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bc40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1bc50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1bc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1bca0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
1bcb0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
1bcc0 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
1bcd0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bce0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1bcf0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bd00 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1bd10 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1bd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd40 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
1bd50 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
1bd60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1bd70 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
1bd80 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1bd90 6f 6e 0d 0a 7d 0d 0a                             on..}..