System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a1a716525e1170b4021c5fd6530a13fa19241fe6:


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 34 2e 64 6c 6c 22  Interop.094.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 6f 75  t, int index, ou
b210: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t 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 6f 75 74 20 69  int index, out 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 6f 75 74 20 69 6e  nt index, out 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 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out 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 6f 75 74 20   int index, out 
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: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out 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 6f 75 74 20 69 6e 74 20 6c 65  ndex, out 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 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out 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 6f 75  t, int index, ou
b660: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t 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 6f 75 74 20 69 6e 74 20   index, out 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 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out 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 6f 75 74 20 69 6e 74 20   index, out 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 6f 75  t, int index, ou
b880: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t 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: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out 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 6f 75 74 20 49 6e 74 50 74 72 20  tes, out IntPtr 
b990: 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72  stmt, out IntPtr
b9a0: 20 70 74 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20   ptrRemain, out 
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 6f 75 74 20 49 6e 74  colName, out Int
ba70: 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
ba80: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43   out IntPtr ptrC
ba90: 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20  ollSeq, out int 
baa0: 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74  notNull, out int
bab0: 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74   primaryKey, out
bac0: 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75   int autoInc, ou
bad0: 74 20 69 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74  t int dtLen, out
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 6f 75 74 20 69 6e 74 20 6c 65 6e 29   p, out 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 6f 75 74 20 69  (IntPtr p, out 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 6f 75 74 20  Enum flags, out 
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 6f 75  gsEnum flags, ou
c2e0: 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t 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: 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  out IntPtr stmt,
d870: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52   out 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 6f 75 74 20 49 6e 74 50 74  Bytes, out IntPt
d9a0: 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50  r stmt, out 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 6f 75 74 20 49 6e 74 50 74 72 20 70 74  e, out IntPtr pt
daf0: 72 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49  rDataType, out I
db00: 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
db10: 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c  , out int notNul
db20: 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61  l, out int prima
db30: 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61  ryKey, out 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 6f 75 74 20 69 6e 74 20  ontext, out int 
de90: 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e  type, out int en
dea0: 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  c, out 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 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64  , out 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: 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  out int sortOrde
e0a0: 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72  r, out int onErr
e0b0: 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 43  or, out IntPtr C
e0c0: 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e  ollation, out 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 6c 6f 61 64 5f 65 78  3_enable_load_ex
e7f0: 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
e800: 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74    IntPtr db, int
e810: 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
e820: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e830: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e850: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e860: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e870: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e880: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e890: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e8a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e8b0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e8c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
e8d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
e8e0: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
e8f0: 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
e900: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
e910: 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b   fileName, byte[
e920: 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20  ] procName, ref 
e930: 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d  IntPtr pError);.
e940: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
e950: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e960: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
e970: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
e980: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
e990: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
e9a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
e9b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e9c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
e9d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
e9e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e9f0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
ea00: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65 72  ode sqlite3_over
ea10: 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e  load_function(In
ea20: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
ea30: 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  zName, int nArgs
ea40: 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57  );....#if WINDOW
ea50: 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  S..#if !PLATFORM
ea60: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ea70: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ea80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ea90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
eaa0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
eab0: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
eac0: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
ead0: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
eae0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
eaf0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
eb00: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
eb10: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
eb20: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
eb30: 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
eb40: 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63  _win32_set_direc
eb50: 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f 72  tory" SQLite cor
eb60: 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
eb70: 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
eb80: 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
eb90: 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a  ed on Windows...
eba0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
ebb0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ebc0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
ebd0: 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
ebe0: 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75  _set_directory(u
ebf0: 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67  int type, string
ec00: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
ec10: 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20  !DEBUG // NOTE: 
ec20: 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33 32  Should be "WIN32
ec30: 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42 55  HEAP && !MEMDEBU
ec40: 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  G"..#if !PLATFOR
ec50: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ec60: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ec70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ec80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ec90: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
eca0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ecb0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ecc0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ecd0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
ece0: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
ecf0: 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33  he "sqlite3_win3
ed00: 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53 51  2_reset_heap" SQ
ed10: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
ed20: 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20  y function is.. 
ed30: 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
ed40: 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69   supported on Wi
ed50: 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57  ndows when the W
ed60: 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f  in32 native allo
ed70: 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20  cator is in..   
ed80: 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69   //       use (i
ed90: 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20  .e. by default, 
eda0: 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69  in "Release" bui
edb0: 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
edc0: 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f  ta.SQLite..    /
edd0: 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20  /       only).  
ede0: 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22  By default, in "
edf0: 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66  Debug" builds of
ee00: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
ee10: 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f  ite, the..    //
ee20: 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20         MEMDEBUG 
ee30: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65  allocator is use
ee40: 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  d...    //..    
ee50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ee60: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
ee70: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
ee80: 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 28  in32_reset_heap(
ee90: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
eea0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
eeb0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
eec0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
eed0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
eee0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
eef0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ef00: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ef10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ef20: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ef30: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
ef40: 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
ef50: 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70  n32_compact_heap
ef60: 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
ef70: 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
ef80: 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
ef90: 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
efa0: 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
efb0: 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
efc0: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
efd0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
efe0: 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
eff0: 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
f000: 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
f010: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
f020: 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
f030: 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
f040: 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
f050: 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
f060: 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
f070: 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
f080: 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
f090: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
f0a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f0b0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
f0c0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
f0d0: 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74  e3_win32_compact
f0e0: 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20 6c  _heap(ref uint l
f0f0: 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66  argest);..#endif
f100: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
f110: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f120: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f130: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f140: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
f150: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
f160: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f170: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
f180: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f190: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
f1a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f1b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f1c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  Ptr sqlite3_mall
f1d0: 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  oc(int n);....#i
f1e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f1f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f200: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f210: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f220: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f230: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f240: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
f250: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f260: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
f270: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
f280: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f290: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65  ntPtr sqlite3_re
f2a0: 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20  alloc(IntPtr p, 
f2b0: 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
f2c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f2d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f2e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f2f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f300: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f310: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f320: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f330: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f340: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f350: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f360: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
f370: 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e   sqlite3_free(In
f380: 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
f390: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f3a0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f3b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f3c0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
f3d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
f3e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f3f0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
f400: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f410: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
f420: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f430: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
f440: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
f450: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74  ite3_open_v2(byt
f460: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
f470: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c  , out IntPtr db,
f480: 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73   SQLiteOpenFlags
f490: 45 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e 74 50  Enum flags, IntP
f4a0: 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20  tr vfs);....#if 
f4b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f4c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f4d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f4e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
f4f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
f500: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f510: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
f520: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
f530: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
f540: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f550: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
f560: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
f570: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
f580: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f590: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
f5a0: 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  de sqlite3_open1
f5b0: 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  6(string fileNam
f5c0: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62  e, out IntPtr db
f5d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
f5e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f5f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f600: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f610: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f620: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
f630: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f640: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f650: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f660: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f670: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f680: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
f690: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e  te3_interrupt(In
f6a0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
f6b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f6c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f6d0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f6e0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f6f0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f700: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f710: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
f720: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f730: 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c  n long sqlite3_l
f740: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
f750: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65  (IntPtr db);..#e
f760: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
f770: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f780: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f790: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f7a0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f7b0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f7c0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f7d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f7e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f7f0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f800: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f810: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
f820: 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74  ite3_changes(Int
f830: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
f840: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f850: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f860: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f870: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
f880: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
f890: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f8a0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
f8b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f8c0: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
f8d0: 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65  mory_used();..#e
f8e0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
f8f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f900: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f910: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f920: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f930: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f940: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f950: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f960: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
f970: 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
f980: 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72  _highwater(int r
f990: 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64  esetFlag);..#end
f9a0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
f9b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f9c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f9d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f9e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f9f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fa00: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fa10: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
fa20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fa30: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fa40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fa50: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
fa60: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
fa70: 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
fa80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
fa90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
faa0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fab0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
fac0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
fad0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
fae0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
faf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fb00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
fb10: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
fb20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
fb30: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
fb40: 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
fb50: 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
fb60: 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
fb70: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fb80: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
fb90: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fba0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
fbb0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
fbc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
fbd0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
fbe0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fbf0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
fc00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
fc10: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
fc20: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
fc30: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e  te3_bind_blob(In
fc40: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
fc50: 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c  ndex, Byte[] val
fc60: 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
fc70: 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74  ntPtr nTransient
fc80: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
fc90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fca0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
fcb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
fcc0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fcd0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fce0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fcf0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fd00: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fd10: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fd20: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49  e3_bind_double(I
fd30: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
fd40: 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61  index, double va
fd50: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
fd60: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
fd70: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
fd80: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fd90: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
fda0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
fdb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
fdc0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
fdd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fde0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
fdf0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
fe00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fe10: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
fe20: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
fe30: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
fe40: 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76  int index, int v
fe50: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  alue);....    //
fe60: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
fe70: 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
fe80: 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
fe90: 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65  ind_int"; howeve
fea0: 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
feb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
fec0: 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
fed0: 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
fee0: 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65  ed (32-bit) inte
fef0: 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
ff00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ff10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ff20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ff30: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
ff40: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
ff50: 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e  ind_int", Callin
ff60: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ff70: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ff80: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
ff90: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ffa0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
ffb0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
ffc0: 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65  _bind_int")]..#e
ffd0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ffe0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fff0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
10000 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
10010 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
10020 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20  int index, uint 
10030 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
10040 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10050 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10060 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10070 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10080 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10090 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
100a0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
100b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
100c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
100d0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
100e0 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
100f0 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20  int index, long 
10100 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
10110 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  ...    //..    /
10120 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61  / NOTE: This rea
10130 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22  lly just calls "
10140 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
10150 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74  64"; however, it
10160 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f   has the..    //
10170 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74         correct t
10180 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f  ype signature fo
10190 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f  r an unsigned lo
101a0 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65  ng (64-bit) inte
101b0 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
101c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
101d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
101e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
101f0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
10200 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
10210 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c  ind_int64", Call
10220 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10240 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
10250 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10260 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10270 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
10280 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72  nd_uint64(IntPtr
10290 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
102a0 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  , ulong value);.
102b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
102c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
102d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
102e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
102f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10300 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10310 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10320 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10330 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10340 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10350 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10360 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
10370 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
10380 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e  te3_bind_null(In
10390 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
103a0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
103b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
103c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
103d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
103e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
103f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10400 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10410 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10420 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10430 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10440 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10450 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10460 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10470 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74  e3_bind_text(Int
10480 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10490 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  dex, byte[] valu
104a0 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
104b0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
104c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
104d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
104e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
104f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10500 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10510 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10520 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10530 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10540 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10550 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10560 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10570 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10580 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
10590 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
105a0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
105b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
105c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
105d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
105e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
105f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10600 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10610 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10620 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10630 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10640 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10650 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
10660 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
10670 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20  er_index(IntPtr 
10680 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  stmt, byte[] str
10690 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
106a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
106b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
106c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
106d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
106e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
106f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10700 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10710 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10720 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10730 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10740 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
10750 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f  qlite3_column_co
10760 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
10770 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10780 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10790 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
107a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
107b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
107c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
107d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
107e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
107f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10800 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10810 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10820 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10830 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74  rCode sqlite3_st
10840 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ep(IntPtr stmt);
10850 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10860 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10870 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
108a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
108b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
108c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
108d0 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
108e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
108f0 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
10900 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10910 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
10920 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10930 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10940 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10950 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10960 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10970 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10980 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10990 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
109a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
109b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
109c0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
109d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
109e0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
109f0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
10a00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10a10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10a20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10a30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10a40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10a50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10a60 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
10a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10a80 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
10a90 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74  column_int64(Int
10aa0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10ab0 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
10ac0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10ad0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10af0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10b00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10b20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10b40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10b50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10b60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10b70 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10b80 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74  _column_blob(Int
10b90 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10ba0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10bb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10bc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10bd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10be0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10bf0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10c00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10c10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10c20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10c30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10c40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10c50 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10c60 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
10c70 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  es(IntPtr stmt, 
10c80 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
10c90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10ca0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10cb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10cc0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10cd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10ce0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10cf0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10d00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10d10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10d20 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10d30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10d40 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
10d50 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  mn_bytes16(IntPt
10d60 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10d70 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10d80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10d90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10da0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10db0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10dc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10dd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10de0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10df0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10e00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10e10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10e20 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
10e30 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
10e40 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
10e50 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
10e60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10e70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10e80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10ea0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10eb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10ec0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10ed0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10ee0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10ef0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10f00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10f10 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10f20 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
10f30 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49  eate_collation(I
10f40 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
10f50 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54   strName, int nT
10f60 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
10f70 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74  er, SQLiteCollat
10f80 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69  ion func);....#i
10f90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10fa0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10fb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10fc0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10fd0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10fe0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10ff0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11010 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11020 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11030 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
11040 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  nt sqlite3_aggre
11050 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74  gate_count(IntPt
11060 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
11070 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11080 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11090 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
110a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
110b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
110c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
110d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
110e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
110f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11100 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11110 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11120 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
11130 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
11140 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
11150 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11160 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11180 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11190 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
111a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
111b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
111c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
111d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
111e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
111f0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
11200 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
11210 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
11220 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11230 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11240 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11250 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11260 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11270 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11280 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11290 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
112a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
112b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
112c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
112d0 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
112e0 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  e_bytes16(IntPtr
112f0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
11300 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11310 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11330 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11340 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11350 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11360 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11370 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75  tatic extern dou
11380 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ble sqlite3_valu
11390 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  e_double(IntPtr 
113a0 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
113b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
113c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
113d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
113e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
113f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11400 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11410 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11430 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11440 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11460 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
11470 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b  e_int(IntPtr p);
11480 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11490 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
114a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
114b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
114c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
114d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
114e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
114f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11500 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
11510 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
11520 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65  4(IntPtr p);..#e
11530 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
11540 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11550 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11560 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11570 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11580 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11590 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
115a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
115b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
115c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
115d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
115e0 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
115f0 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61  inity sqlite3_va
11600 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20  lue_type(IntPtr 
11610 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
11620 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11630 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11640 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11650 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11660 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11670 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11680 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11690 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
116a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
116b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
116c0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
116d0 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
116e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
116f0 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
11700 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
11710 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
11720 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11730 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11740 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11750 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11760 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11770 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11780 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
11790 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
117a0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
117b0 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
117c0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
117d0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
117e0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
117f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11820 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11830 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11840 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11850 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11860 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11870 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11890 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
118a0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
118b0 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e  error(IntPtr con
118c0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  text, byte[] str
118d0 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  Err, int nLen);.
118e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
118f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11900 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11910 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11930 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11940 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11950 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11960 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11970 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11980 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11990 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
119a0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f  _result_error_co
119b0 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  de(IntPtr contex
119c0 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  t, SQLiteErrorCo
119d0 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  de value);....#i
119e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
119f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11a00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11a10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11a20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11a30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11a40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11a50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11a60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11a70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11a80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
11a90 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
11aa0 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
11ab0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
11ac0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11ad0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11ae0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11af0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11b00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11b10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11b20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11b30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11b40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11b50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11b60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11b70 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11b80 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e  3_result_error_n
11b90 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74  omem(IntPtr cont
11ba0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
11bb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11bc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11bd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11be0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11bf0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11c00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11c10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11c20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11c30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11c40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11c50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
11c60 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
11c70 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lue(IntPtr conte
11c80 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65  xt, IntPtr value
11c90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11ca0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11cb0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11cc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11cd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11ce0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11cf0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11d00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11d10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11d20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11d30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11d40 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11d50 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62  te3_result_zerob
11d60 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
11d70 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  xt, int nLen);..
11d80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11d90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11da0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11db0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11dc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11dd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11de0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11df0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11e00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11e10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11e20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11e30 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
11e40 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74  result_int(IntPt
11e50 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76  r context, int v
11e60 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
11e70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11e80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11e90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11ea0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11eb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11ec0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11ed0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
11ee0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
11ef0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
11f00 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  lt_int64(IntPtr 
11f10 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61  context, long va
11f20 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
11f30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11f40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11f50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11f60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11f70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11f80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11f90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11fa0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11fb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11fc0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11fd0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11fe0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
11ff0 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74  esult_null(IntPt
12000 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
12010 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12020 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12030 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12040 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12050 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12060 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12070 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12080 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12090 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
120a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
120b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
120c0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
120d0 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ult_text(IntPtr 
120e0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
120f0 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  value, int nLen,
12100 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
12110 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
12120 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12130 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12140 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12150 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12160 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12170 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12180 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12190 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
121a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
121b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
121c0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
121d0 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
121e0 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72  e_context(IntPtr
121f0 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42   context, int nB
12200 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ytes);....#if !P
12210 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12220 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12230 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12240 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12250 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12260 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12270 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
12280 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
12290 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
122a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
122b0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
122c0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
122d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
122e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
122f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12300 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
12310 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  xt16(IntPtr stmt
12320 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72  , int index, str
12330 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  ing value, int n
12340 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
12350 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
12360 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12370 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12380 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12390 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
123a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
123b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
123c0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
123d0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
123e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
123f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12400 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
12410 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
12420 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12430 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12440 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
12450 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49  result_error16(I
12460 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
12470 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
12480 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
12490 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
124a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
124b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
124c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
124d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
124e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
124f0 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
12500 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
12510 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12520 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12530 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
12540 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
12550 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12560 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12570 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
12580 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49  _result_text16(I
12590 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
125a0 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
125b0 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
125c0 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
125d0 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45  #if INTEROP_CODE
125e0 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  C..#if !PLATFORM
125f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12600 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12610 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12620 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12630 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12640 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12650 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12670 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12680 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12690 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
126a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28  ode sqlite3_key(
126b0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
126c0 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
126d0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
126e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
126f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12700 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12710 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12720 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12730 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12740 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12750 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12760 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12770 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12780 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
12790 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
127a0 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c  rekey(IntPtr db,
127b0 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74   byte[] key, int
127c0 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69   keylen);..#endi
127d0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
127e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
127f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12800 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12820 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12830 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12840 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12850 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12860 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12870 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12880 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12890 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
128a0 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53  zer(IntPtr db, S
128b0 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43  QLiteAuthorizerC
128c0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
128d0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
128e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
128f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12900 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12910 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12920 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12930 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12940 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12950 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12960 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12970 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12980 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12990 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
129a0 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74  _update_hook(Int
129b0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70  Ptr db, SQLiteUp
129c0 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  dateCallback fun
129d0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
129e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
129f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12a00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12a10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12a20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12a30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12a40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12a50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12a60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12a70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12a80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12a90 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
12aa0 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f  lite3_commit_hoo
12ab0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
12ac0 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  iteCommitCallbac
12ad0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
12ae0 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
12af0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12b00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12b10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12b20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12b30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12b40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12b50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12b60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12b70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12b80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12b90 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12ba0 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  tr sqlite3_trace
12bb0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
12bc0 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  teTraceCallback 
12bd0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
12be0 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20  ser);....    // 
12bf0 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f  Since sqlite3_co
12c00 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76  nfig() takes a v
12c10 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
12c20 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
12c30 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
12c40 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
12c50 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
12c60 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77   calls that we w
12c70 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66  ant to use...#if
12c80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12c90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12ca0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12cb0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
12cc0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
12cd0 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
12ce0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12cf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12d00 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12d10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12d20 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
12d30 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
12d40 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
12d50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12d60 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
12d70 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
12d80 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28  te3_config_none(
12d90 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
12da0 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20  num op);....#if 
12db0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12dc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12dd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12de0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
12df0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
12e00 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
12e10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12e20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12e30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12e40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12e50 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
12e60 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
12e70 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
12e80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12e90 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
12ea0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
12eb0 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51  e3_config_int(SQ
12ec0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
12ed0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29  m op, int value)
12ee0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12ef0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12f00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12f10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12f20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
12f30 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
12f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12f50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12f60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12f70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12f80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12f90 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
12fa0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
12fb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12fc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12fd0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
12fe0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
12ff0 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e  ig_log(SQLiteCon
13000 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53  figOpsEnum op, S
13010 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
13020 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
13030 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
13040 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13050 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13070 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13080 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13090 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
130a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
130b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
130c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
130d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
130e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
130f0 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  r sqlite3_rollba
13100 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  ck_hook(IntPtr d
13110 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  b, SQLiteRollbac
13120 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  kCallback func, 
13130 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
13140 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13160 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13190 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
131a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
131b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
131c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
131d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
131e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
131f0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
13200 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
13210 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
13220 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13230 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13240 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13250 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13260 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13270 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13280 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13290 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
132a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
132b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
132c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
132d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
132e0 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73  qlite3_db_releas
132f0 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20  e_memory(IntPtr 
13300 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
13310 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13320 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13330 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13340 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13350 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13360 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13370 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13390 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
133a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
133b0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
133c0 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
133d0 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ame(IntPtr db, I
133e0 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a  ntPtr dbName);..
133f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13400 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13410 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13420 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13430 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13440 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13450 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13460 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13470 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13480 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13490 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
134a0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
134b0 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50  3_next_stmt(IntP
134c0 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74  tr db, IntPtr st
134d0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
134e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
134f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13500 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13510 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13520 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13530 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13540 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13560 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13570 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13580 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13590 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
135a0 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c  _exec(IntPtr db,
135b0 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20   byte[] strSql, 
135c0 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63  IntPtr pvCallbac
135d0 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72 61  k, IntPtr pvPara
135e0 6d 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 65 72  m, out IntPtr er
135f0 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rMsg);....#if !P
13600 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13610 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13620 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13630 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13640 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13650 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13660 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13680 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13690 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
136a0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
136b0 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d  qlite3_release_m
136c0 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73  emory(int nBytes
136d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
136e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
136f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13700 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13710 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13720 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13730 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13740 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13750 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13760 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13770 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13780 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
13790 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
137a0 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
137b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
137c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
137d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
137e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
137f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13800 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13810 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13820 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13830 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13840 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13850 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13860 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13870 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
13880 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
13890 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
138a0 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  noff);....#if !P
138b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
138c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
138d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
138e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
138f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13900 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13910 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13930 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13940 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13950 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13960 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13970 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  e3_errcode(IntPt
13980 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
13990 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
139a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
139b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
139c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
139d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
139e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
139f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13a00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13a10 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13a20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13a30 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13a40 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13a50 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
13a60 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
13a70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13a80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13a90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13aa0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13ab0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13ac0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13ad0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13ae0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13af0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13b00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13b10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13b20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
13b30 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65  e3_errstr(SQLite
13b40 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f  ErrorCode rc); /
13b50 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a  * 3.7.15+ */....
13b60 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
13b70 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73  ite3_log() takes
13b80 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
13b90 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
13ba0 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
13bb0 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
13bc0 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
13bd0 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
13be0 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
13bf0 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e  y exposing a sin
13c00 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d  gle string, and.
13c10 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f  .    // depend o
13c20 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20  n the caller to 
13c30 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e  format the strin
13c40 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  g...#if !PLATFOR
13c50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13c60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13c70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13c80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13c90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13ca0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13cb0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13cc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13cd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13ce0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13cf0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
13d00 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f  3_log(SQLiteErro
13d10 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20  rCode iErrCode, 
13d20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b  byte[] zFormat);
13d30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13d40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13d50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13d60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13d70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13d80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13da0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13db0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13dc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13dd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13de0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
13df0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c  Code sqlite3_fil
13e00 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72  e_control(IntPtr
13e10 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e   db, byte[] zDbN
13e20 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
13e30 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69  Ptr pArg);....#i
13e40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13e50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13e60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13e70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13e80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13e90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13ea0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13eb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13ec0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13ed0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13ee0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13ef0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61  ntPtr sqlite3_ba
13f00 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72  ckup_init(IntPtr
13f10 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20   destDb, byte[] 
13f20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74  zDestName, IntPt
13f30 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65  r sourceDb, byte
13f40 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b  [] zSourceName);
13f50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13f60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13f70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13f80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13f90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13fa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13fb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13fc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13fd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13fe0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13ff0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14000 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14010 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
14020 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20  kup_step(IntPtr 
14030 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67  backup, int nPag
14040 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
14050 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14060 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14070 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14080 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14090 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
140a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
140b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
140c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
140d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
140e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
140f0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
14100 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69  te3_backup_remai
14110 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b  ning(IntPtr back
14120 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
14130 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14140 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14160 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14170 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14180 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14190 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
141a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
141b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
141c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
141d0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
141e0 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65  ite3_backup_page
141f0 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63  count(IntPtr bac
14200 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
14210 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14220 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14230 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14240 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14250 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14260 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14270 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14290 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
142a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
142b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
142c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
142d0 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
142e0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
142f0 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
14300 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14310 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14330 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14340 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14350 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14360 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14380 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14390 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
143a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
143b0 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
143c0 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
143d0 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
143e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
143f0 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
14400 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
14410 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
14420 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
14430 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
14440 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
14450 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
14460 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
14470 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
14480 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
14490 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
144a0 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
144b0 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49  api calls..#if I
144c0 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
144d0 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
144e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
144f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14500 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14510 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14520 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14530 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14540 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14550 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14560 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14570 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14580 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14590 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
145a0 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49  posable_module(I
145b0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
145c0 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74   name, ref sqlit
145d0 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  e3_module module
145e0 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  , IntPtr pClient
145f0 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f  Data, xDestroyMo
14600 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d  dule xDestroy);.
14610 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14620 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14630 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14640 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14650 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14660 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14670 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14680 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14690 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
146a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
146b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
146c0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
146d0 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28  _dispose_module(
146e0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b  IntPtr pModule);
146f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65  ..#endif..    #e
14700 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
14710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14760 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74     #region sqlit
14770 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61  e interop api ca
14780 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63  lls (.NET Compac
14790 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79  t Framework only
147a0 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  )..#if PLATFORM_
147b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
147c0 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e   && !SQLITE_STAN
147d0 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  DARD..    [DllIm
147e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
147f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14800 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14810 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  id sqlite3_last_
14820 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74  insert_rowid_int
14830 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
14840 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b  ref long rowId);
14850 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14860 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14870 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14880 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
14890 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
148a0 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
148b0 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
148c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
148d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
148e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
148f0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
14900 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
14910 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69  hwater_interop(i
14920 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65  nt resetFlag, re
14930 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
14940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
14960 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14970 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14980 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14990 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e  3_bind_double_in
149a0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
149b0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
149c0 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
149d0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
149e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
149f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14a00 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14a10 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14a20 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
14a30 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
14a40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
14a50 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
14a60 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14a70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
14a80 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
14a90 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
14aa0 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
14ab0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14ac0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
14ad0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
14ae0 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f  nd_uint64_intero
14af0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
14b00 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c  nt index, ref ul
14b10 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
14b20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14b30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14b40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14b50 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14b60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
14b70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
14b80 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
14b90 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c  , out double val
14ba0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
14bb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14bc0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14bd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14be0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
14bf0 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
14c00 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
14c10 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f  nt index, out lo
14c20 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
14c30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14c40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14c60 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14c70 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f  e3_value_double_
14c80 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
14c90 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c  , out double val
14ca0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
14cb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14cc0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14cd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14ce0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
14cf0 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  ue_int64_interop
14d00 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49  (IntPtr p, out I
14d10 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
14d20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14d30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14d40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14d50 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
14d60 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
14d70 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
14d80 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
14d90 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
14da0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14db0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14dc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14dd0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
14de0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
14df0 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
14e00 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49  r context, ref I
14e10 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
14e20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14e30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14e40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14e50 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14e60 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
14e70 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f  sposable_module_
14e80 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
14e90 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74    IntPtr db, Int
14ea0 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72  Ptr name, IntPtr
14eb0 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56   pModule, int iV
14ec0 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20  ersion, xCreate 
14ed0 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20  xCreate,..      
14ee0 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e    xConnect xConn
14ef0 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20  ect, xBestIndex 
14f00 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73  xBestIndex, xDis
14f10 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
14f20 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ect,..        xD
14f30 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c  estroy xDestroy,
14f40 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43   xOpen xOpen, xC
14f50 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69  lose xClose, xFi
14f60 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20  lter xFilter,.. 
14f70 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65         xNext xNe
14f80 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78  xt, xEof xEof, x
14f90 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20  Column xColumn, 
14fa0 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78  xRowId xRowId, x
14fb0 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d  Update xUpdate,.
14fc0 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20  .        xBegin 
14fd0 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53  xBegin, xSync xS
14fe0 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f  ync, xCommit xCo
14ff0 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20  mmit, xRollback 
15000 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
15010 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
15020 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c  n xFindFunction,
15030 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
15040 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  , xSavepoint xSa
15050 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20  vepoint,..      
15060 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65    xRelease xRele
15070 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ase, xRollbackTo
15080 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e   xRollbackTo, In
15090 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
150a0 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74  ,..        xDest
150b0 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
150c0 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64  oyModule);..#end
150d0 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46  if..    // PLATF
150e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
150f0 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
15100 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65  STANDARD..    #e
15110 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15170 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
15180 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66  e Delegates..#if
15190 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
151a0 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
151b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
151c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
151d0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
151e0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
151f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
15210 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
15220 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72  iteErrorCode xCr
15230 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  eate(..        I
15240 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
15250 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
15260 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
15270 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
15280 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
15290 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
152a0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
152b0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
152c0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
15320 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15330 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15340 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
15350 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
15360 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15370 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
15380 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
15390 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
153a0 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
153b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
153c0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
153d0 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
153e0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
153f0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
15400 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
15410 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
15420 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
15430 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
15440 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15490 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
154a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
154b0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
154c0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
154d0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
154e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
154f0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
15500 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
15510 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
15520 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49  ndex(..        I
15530 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
15540 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
15550 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
15560 20 20 20 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 2f  ////////////////
155a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
155b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
155c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
155d0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
155e0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
155f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15600 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
15610 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
15620 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
15630 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
15640 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
15650 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
15660 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
15670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15680 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
156c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
156d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
156e0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
156f0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
15700 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15710 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
15720 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
15730 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
15740 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
15750 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
15760 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
15770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
157c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
157d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
157e0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
157f0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
15800 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15810 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15820 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
15830 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15840 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
15850 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
15860 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
15870 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
15880 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
158e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
158f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
15900 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
15910 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
15920 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15930 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
15940 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
15950 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
15960 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ose(..        In
15970 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
15980 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
15990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
159e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
159f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15a00 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
15a10 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
15a20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15a30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15a40 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
15a50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15a60 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
15a70 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
15a80 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
15a90 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
15aa0 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
15ab0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
15ac0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
15ad0 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a  r argv..    );..
15ae0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b30 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
15b40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15b50 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
15b60 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
15b70 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
15b80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15b90 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
15ba0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
15bb0 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
15bc0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15bd0 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
15be0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
15c40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15c50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
15c60 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
15c70 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
15c80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15c90 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
15ca0 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
15cb0 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49  xEof(..        I
15cc0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
15cd0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15d30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15d40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15d50 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
15d60 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
15d70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15d80 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
15d90 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
15da0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15db0 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
15dc0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
15dd0 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r,..        IntP
15de0 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
15df0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
15e00 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
15e60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15e70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15e80 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
15e90 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
15ea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15eb0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
15ec0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
15ed0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
15ee0 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
15ef0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
15f00 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  or,..        ref
15f10 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
15f20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15f80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15f90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
15fa0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
15fb0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
15fc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15fd0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
15fe0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
15ff0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16000 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
16010 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
16020 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
16030 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
16040 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
16050 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
16060 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
160c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
160d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
160e0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
160f0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16100 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16110 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
16120 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
16130 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16140 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
16150 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16160 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
16170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23  ///////////....#
161c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
161d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
161e0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
161f0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16200 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16210 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16220 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16230 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
16240 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20  ode xSync(..    
16250 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16260 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
162c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
162d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
162e0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
162f0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16300 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16310 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16320 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16330 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
16340 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ode xCommit(..  
16350 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16360 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
16370 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
163c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
163d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
163e0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
163f0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16410 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16420 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16430 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
16440 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28  rCode xRollback(
16450 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16460 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
16470 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
164d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
164e0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
164f0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
16500 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
16510 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16520 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
16530 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46   delegate int xF
16540 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
16550 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16560 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
16570 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20   nArg,..        
16580 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
16590 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
165a0 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
165b0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ck,..        ref
165c0 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74   IntPtr pUserDat
165d0 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  a..    );....   
165e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16630 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16640 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16650 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
16660 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
16670 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16680 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16690 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
166a0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
166b0 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20  Code xRename(.. 
166c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
166d0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
166e0 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29  tPtr zNew..    )
166f0 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
16740 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
16750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
16770 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
16780 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16790 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
167a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
167b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
167c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61  iteErrorCode xSa
167d0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
167e0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
167f0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
16800 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
16810 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16860 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
16870 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16880 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
16890 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
168a0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
168b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
168c0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
168d0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
168e0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65  eErrorCode xRele
168f0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ase(..        In
16900 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
16910 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
16920 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
16930 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16980 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16990 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
169a0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
169b0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
169c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
169d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
169e0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
169f0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
16a00 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
16a10 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  To(..        Int
16a20 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
16a30 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
16a40 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
16a50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16aa0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16ab0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16ac0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16ad0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16ae0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16af0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
16b00 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
16b10 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74  egate void xDest
16b20 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72  royModule(IntPtr
16b30 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a   pClientData);..
16b40 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
16b50 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
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 0d 0a 0d 0a 20 20 20  /////////....   
16bb0 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
16bc0 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20  Structures..#if 
16bd0 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
16be0 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75  TABLE..    [Stru
16bf0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
16c00 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
16c10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16c20 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f  truct sqlite3_mo
16c30 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  dule..    {..   
16c40 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
16c50 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  iVersion;..     
16c60 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61 74     public xCreat
16c70 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20  e xCreate;..    
16c80 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e      public xConn
16c90 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20  ect xConnect;.. 
16ca0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42         public xB
16cb0 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
16cc0 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  dex;..        pu
16cd0 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74  blic xDisconnect
16ce0 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20   xDisconnect;.. 
16cf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44         public xD
16d00 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b  estroy xDestroy;
16d10 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
16d20 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20   xOpen xOpen;.. 
16d30 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
16d40 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20  lose xClose;..  
16d50 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69        public xFi
16d60 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20  lter xFilter;.. 
16d70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e         public xN
16d80 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20  ext xNext;..    
16d90 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20      public xEof 
16da0 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70  xEof;..        p
16db0 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43  ublic xColumn xC
16dc0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
16dd0 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52  public xRowId xR
16de0 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70  owId;..        p
16df0 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55  ublic xUpdate xU
16e00 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  pdate;..        
16e10 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42  public xBegin xB
16e20 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  egin;..        p
16e30 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e  ublic xSync xSyn
16e40 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  c;..        publ
16e50 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  ic xCommit xComm
16e60 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  it;..        pub
16e70 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  lic xRollback xR
16e80 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20  ollback;..      
16e90 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75    public xFindFu
16ea0 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
16eb0 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  tion;..        p
16ec0 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52  ublic xRename xR
16ed0 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  ename;..        
16ee0 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  /* The methods a
16ef0 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
16f00 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c  ion 1 of the sql
16f10 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
16f20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20        * object. 
16f30 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65   Those below are
16f40 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61   for version 2 a
16f50 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a  nd greater. */..
16f60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
16f70 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70  Savepoint xSavep
16f80 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  oint;..        p
16f90 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78  ublic xRelease x
16fa0 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20  Release;..      
16fb0 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61    public xRollba
16fc0 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ckTo xRollbackTo
16fd0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17030 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
17040 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
17050 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
17060 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
17070 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20  lite3_vtab..    
17080 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
17090 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  c IntPtr pModule
170a0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
170b0 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e  c int nRef; /* N
170c0 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f  O LONGER USED */
170d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
170e0 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b   IntPtr zErrMsg;
170f0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17150 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
17160 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
17170 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
17180 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
17190 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
171a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
171b0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
171c0 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  VTab;..    }....
171d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17220 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
17230 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
17240 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
17250 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
17260 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
17270 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
17280 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
17290 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
172a0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
172b0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
172c0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63  ndexConstraint c
172d0 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20  onstraint..     
172e0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
172f0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
17300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17310 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
17320 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  raint != null)..
17330 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
17340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17350 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61  Column = constra
17360 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  int.iColumn;..  
17370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
17380 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70   = constraint.op
17390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
173a0 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73     usable = cons
173b0 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a  traint.usable;..
173c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
173d0 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f  iTermOffset = co
173e0 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66  nstraint.iTermOf
173f0 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  fset;..         
17400 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
17410 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17460 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
17470 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e  blic int iColumn
17480 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
17490 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  c SQLiteIndexCon
174a0 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20  straintOp op;.. 
174b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
174c0 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20  te usable;..    
174d0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
174e0 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
174f0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
17500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
17550 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
17560 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
17570 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
17580 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
17590 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20  index_orderby.. 
175a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
175b0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
175c0 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20  ex_orderby(..   
175d0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
175e0 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65  ndexOrderBy orde
175f0 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
17600 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
17610 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
17620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17630 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20   if (orderBy != 
17640 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17650 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17660 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20        iColumn = 
17670 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b  orderBy.iColumn;
17680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17690 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79    desc = orderBy
176a0 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20  .desc;..        
176b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
176c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
176d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
17720 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
17730 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d  n; /* Column num
17740 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ber */..        
17750 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63  public byte desc
17760 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20  ;   /* True for 
17770 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
17780 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d   ASC. */..    }.
17790 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
177f0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
17800 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
17810 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17820 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
17830 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
17840 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  age..    {..    
17850 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
17860 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
17870 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20  int_usage(..    
17880 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
17890 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
178a0 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  ge constraintUsa
178b0 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ge..            
178c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
178d0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
178e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
178f0 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73  if (constraintUs
17900 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  age != null)..  
17910 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17920 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
17930 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61  vIndex = constra
17940 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64  intUsage.argvInd
17950 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex;..           
17960 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73       omit = cons
17970 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74  traintUsage.omit
17980 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
17990 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
179a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
179b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
179f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17a00 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20   int argvIndex; 
17a10 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72  /* if >0, constr
17a20 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
17a30 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20  argv to xFilter 
17a40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17a50 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20  ic byte omit;   
17a60 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65    /* Do not code
17a70 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
17a80 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a   constraint */..
17a90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ab0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
17af0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
17b00 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
17b10 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
17b20 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
17b30 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
17b40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
17b50 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20   Inputs */..    
17b60 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
17b70 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e  Constraint; /* N
17b80 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
17b90 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20   in aConstraint 
17ba0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17bb0 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
17bc0 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  raint;..        
17bd0 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65  public int nOrde
17be0 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  rBy;..        pu
17bf0 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64  blic IntPtr aOrd
17c00 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f  erBy;..        /
17c10 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20  * Outputs */..  
17c20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
17c30 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr aConstraintU
17c40 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  sage;..        p
17c50 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d  ublic int idxNum
17c60 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e  ;           /* N
17c70 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64  umber used to id
17c80 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78  entify the index
17c90 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
17ca0 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74  lic string idxSt
17cb0 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72  r;        /* Str
17cc0 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62  ing, possibly ob
17cd0 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69  tained from sqli
17ce0 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20  te3_malloc */.. 
17cf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
17d00 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53  t needToFreeIdxS
17d10 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53  tr; /* Free idxS
17d20 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33  tr using sqlite3
17d30 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20  _free() if true 
17d40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17d50 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f  ic int orderByCo
17d60 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65  nsumed;  /* True
17d70 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c   if output is al
17d80 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f  ready ordered */
17d90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17da0 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65   double estimate
17db0 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61  dCost; /* Estima
17dc0 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e  ted cost of usin
17dd0 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d  g this index */.
17de0 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
17df0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
17e00 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f    }....  ///////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c  //////....#if PL
17e60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17e70 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72  AMEWORK..  inter
17e80 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61  nal abstract cla
17e90 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ss CriticalHandl
17ea0 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  e : IDisposable.
17eb0 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74  .  {..    privat
17ec0 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64  e bool _isClosed
17ed0 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ;..    protected
17ee0 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d   IntPtr handle;.
17ef0 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
17f00 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28   CriticalHandle(
17f10 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61  IntPtr invalidHa
17f20 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  ndleValue)..    
17f30 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
17f40 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
17f50 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73  alue;..      _is
17f60 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d  Closed = false;.
17f70 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43  .    }....    ~C
17f80 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d  riticalHandle().
17f90 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
17fa0 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
17fb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
17fc0 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
17fd0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
17fe0 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d   if (!IsClosed).
17ff0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
18000 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64    this._isClosed
18010 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
18020 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64    if (!IsInvalid
18030 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
18040 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
18050 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  andle();..      
18060 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
18070 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
18080 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18090 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
180a0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
180b0 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
180c0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
180d0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
180e0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
180f0 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
18100 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
18110 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
18120 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
18130 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
18140 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
18150 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c  .    {..      Cl
18160 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d  eanup();..    }.
18170 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
18180 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52   abstract bool R
18190 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
181a0 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
181b0 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28   void SetHandle(
181c0 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20  IntPtr value).. 
181d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
181e0 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  le = value;..   
181f0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
18200 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41   void SetHandleA
18210 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20  sInvalid()..    
18220 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  {..      _isClos
18230 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
18240 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
18250 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
18260 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
18270 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d  c bool IsClosed.
18280 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
18290 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c  t { return _isCl
182a0 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  osed; }..    }..
182b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73  ..    public abs
182c0 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76  tract bool IsInv
182d0 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
182e0 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a     get;..    }..
182f0 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d  ..  }....#endif.
18300 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
18360 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  n SQLiteConnecti
18370 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  onHandle Class..
18380 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74      // Handles t
18390 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74  he unmanaged dat
183a0 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61  abase pointer, a
183b0 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61  nd provides fina
183c0 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  lization..    //
183d0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e   support for it.
183e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
183f0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
18400 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
18410 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
18420 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
18430 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
18440 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  && !PLATFORM_COM
18450 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18460 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
18470 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c  delegate void Cl
18480 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c  oseConnectionCal
18490 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
184a0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
184b0 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20  tionHandle hdl, 
184c0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
184d0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
184e0 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e  static CloseConn
184f0 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63  ectionCallback c
18500 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d  loseConnection =
18510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
18520 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
18530 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69  nnection;..#endi
18540 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
18550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
185a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
185b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
185c0 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
185d0 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
185e0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
185f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
18600 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18650 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
18660 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a  ool ownHandle;..
18670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
186d0 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
186e0 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
186f0 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  Ptr(SQLiteConnec
18700 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a  tionHandle db)..
18710 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18720 20 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d         if (db !=
18730 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
18740 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
18750 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18760 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
18770 20 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73        lock (db.s
18780 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
18790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
187a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
187b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
187c0 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  db.handle;..    
187d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
187e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
187f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18800 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
18810 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18820 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18870 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
18880 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
18890 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62  Handle(IntPtr db
188a0 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  , bool ownHandle
188b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
188c0 20 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29   this(ownHandle)
188d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
188e0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
188f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18900 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
18910 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
18920 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18940 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d  this.ownHandle =
18950 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20   ownHandle;..   
18960 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
18970 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20  Handle(db);..   
18980 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18990 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
189a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
189b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
189f0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
18a00 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
18a10 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c  le(bool ownHandl
18a20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
18a30 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
18a40 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
18a50 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
18a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
18a70 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20   (ownHandle)..  
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
18a90 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
18aa0 65 6e 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61  ent(ref UnsafeNa
18ab0 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
18ac0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
18ad0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
18ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b30 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
18b40 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
18b50 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
18b60 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
18b70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
18b80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
18ba0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
18bb0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
18bc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18bd0 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61        if (!ownHa
18be0 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75  ndle) return tru
18bf0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
18c00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
18c10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
18c20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
18c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18c40 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
18c50 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
18c60 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
18c70 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
18c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18c90 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
18ca0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
18cb0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
18cc0 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
18cd0 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
18ce0 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
18cf0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
18d00 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
18d10 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
18d20 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
18d30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
18d40 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
18d50 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
18d60 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
18d70 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
18d80 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
18d90 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
18da0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e  calHandle);..#en
18db0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  dif....#if !NET_
18dc0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
18dd0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
18de0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
18df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18e00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18e10 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
18e20 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
18e30 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
18e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e50 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
18e60 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
18e70 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
18e80 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18e90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18ea0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
18eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
18ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ed0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
18ee0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
18ef0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
18f00 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
18f10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18f20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
18f30 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
18f40 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
18f50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f70 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
18f80 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
18f90 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
18fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18fb0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
18fc0 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
18fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18fe0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18ff0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
19000 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
19010 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
19020 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
19030 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
19040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19050 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
19060 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
19070 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
19080 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
19090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
190a0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
190b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
190c0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
190d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
190e0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
190f0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
19100 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
19110 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
19120 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
19130 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
19140 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
19150 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
19160 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
19170 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
19180 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
19190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
191a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
191b0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
191c0 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
191d0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
191e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
191f0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
19200 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
19210 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
19220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
19230 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
19240 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
19250 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19260 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
19270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19280 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19290 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
192a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
192b0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
192c0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
192d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
192e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
192f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19300 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
19310 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
19320 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19340 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
19350 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
19360 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19370 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
19380 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
19390 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
193a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
193b0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
193c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
193d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19420 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
19430 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
19440 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
19450 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
19460 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19470 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
19480 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
19490 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
194a0 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
194b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
194c0 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
194d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
194e0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
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 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19540 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e   public bool Own
19550 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  Handle..        
19560 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
19570 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
19580 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
19590 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
195a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
195b0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
195c0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
195d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
195e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
195f0 20 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64    return ownHand
19600 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
19610 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19620 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
19630 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19680 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
19690 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
196a0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
196b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
196c0 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
196d0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
196e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
196f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
19700 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
19710 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
19720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19730 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19740 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
19750 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
19760 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
19770 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
19780 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19790 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
197a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
197f0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
19800 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
19810 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
19820 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
19830 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
19840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19850 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
19860 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
19870 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19890 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
198a0 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
198b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
198c0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
198d0 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
198e0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
198f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19940 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65  gion SQLiteState
19950 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73  mentHandle Class
19960 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65  ..    // Provide
19970 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73  s finalization s
19980 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e  upport for unman
19990 61 67 65 64 20 53 51 4c 69 74 65 20 73 74 61 74  aged SQLite stat
199a0 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74  ements...    int
199b0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
199c0 73 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ss SQLiteStateme
199d0 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  ntHandle : Criti
199e0 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
199f0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
19a00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19a10 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
19a20 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
19a30 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
19a40 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
19a50 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
19a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19aa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19ab0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43   private SQLiteC
19ac0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
19ad0 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  cnn;....        
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19b30 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
19b40 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
19b50 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
19b60 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
19b70 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  stmt)..        {
19b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
19b90 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d   (stmt != null).
19ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19bb0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
19bc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
19be0 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f  ock (stmt.syncRo
19bf0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
19c00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
19c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e      return stmt.
19c30 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
19c40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19c50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19c60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
19c70 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
19c80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
19c90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19ce0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
19cf0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
19d00 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  le(SQLiteConnect
19d10 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49  ionHandle cnn, I
19d20 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20  ntPtr stmt)..   
19d30 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
19d40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
19d50 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
19d60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19d70 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
19d80 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
19d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19db0 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b   this.cnn = cnn;
19dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19dd0 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74    SetHandle(stmt
19de0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
19df0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
19e00 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19e50 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
19e60 74 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  te SQLiteStateme
19e70 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  ntHandle()..    
19e80 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
19e90 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
19ea0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
19eb0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
19ec0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
19ed0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Increment(..  
19ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19ef0 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
19f00 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43  thods.statementC
19f10 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
19f20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
19f30 20 20 20 20 20 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 2f 2f 2f  ////////////////
19f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19f80 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
19f90 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
19fa0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
19fb0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
19fc0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
19fd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
19fe0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19ff0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a000 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1a010 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
1a020 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
1a030 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
1a040 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1a050 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
1a060 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ero);....       
1a070 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
1a080 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
1a090 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1a0b0 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
1a0c0 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
1a0d0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
1a0e0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1a0f0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1a100 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1a110 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1a120 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a140 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1a150 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
1a160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a170 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
1a180 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
1a190 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
1a1a0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1a1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a1c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a1d0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1a1e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a200 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
1a210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1a220 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a250 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
1a260 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1a270 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1a280 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2a0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1a2b0 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
1a2c0 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
1a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2e0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1a2f0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a310 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1a320 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1a330 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1a340 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1a350 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
1a360 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1a380 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1a390 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74  ethods.statement
1a3a0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1a3b0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1a3c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a3d0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
1a3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a3f0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1a400 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1a410 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1a420 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
1a430 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
1a440 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1a450 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
1a460 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
1a470 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1a480 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1a490 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1a4a0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1a4b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1a4c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4e0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1a4f0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
1a500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a510 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
1a520 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
1a530 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
1a540 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1a550 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
1a560 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
1a570 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
1a580 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a590 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a5c0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1a5d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a5e0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1a5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a600 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a610 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a630 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1a640 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1a650 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a670 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
1a680 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
1a690 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a6a0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
1a6b0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1a6c0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
1a6d0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1a6e0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1a6f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1a700 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a750 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
1a760 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1a770 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
1a780 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
1a790 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a7a0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
1a7b0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
1a7c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1a7d0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
1a7e0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74  tiveMethods.stat
1a7f0 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
1a800 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
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 20 20 20 20 20 20 20 20 70 75  //....        pu
1a870 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
1a880 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
1a890 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a8a0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1a8b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1a8c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a8d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1a8e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1a8f0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1a900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a920 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
1a930 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
1a940 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1a950 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a960 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a970 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
1a9d0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
1a9e0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
1a9f0 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
1aa00 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1aa10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aa20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1aa30 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1aa40 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1aa50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1aa70 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
1aa80 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
1aa90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1aaa0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1aab0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1aac0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1ab20 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
1ab30 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
1ab40 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
1ab50 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
1ab60 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
1ab70 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
1ab80 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
1ab90 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
1aba0 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
1abb0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
1abc0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
1abd0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1abe0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1abf0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
1ac00 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
1ac10 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1ac20 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
1ac30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1ac90 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
1aca0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1acb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1ad10 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
1ad20 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
1ad30 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
1ad40 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
1ad50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1ad60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1ad70 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
1ad80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1ad90 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1ada0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1adc0 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
1add0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1ade0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1adf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae00 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
1ae10 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
1ae20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ae30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ae40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ae50 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1ae60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1aec0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
1aed0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
1aee0 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
1aef0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
1af00 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
1af10 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1af20 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1af30 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1af40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1af50 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1af60 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1af70 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1af80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1af90 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
1afa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1afb0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
1afc0 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
1afd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1afe0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b030 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1b040 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
1b050 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
1b060 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
1b070 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b080 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
1b090 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1b0a0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1b0b0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Increment(..  
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1b0d0 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
1b0e0 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e  thods.backupCoun
1b0f0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
1b100 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b110 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b160 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
1b170 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
1b180 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
1b190 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b1a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1b1b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
1b1c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b1d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1b1e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1b1f0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
1b200 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
1b210 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
1b220 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
1b230 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
1b240 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1b250 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
1b260 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1b270 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1b280 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1b290 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
1b2a0 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  up(cnn, localHan
1b2b0 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
1b2c0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1b2d0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1b2f0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1b300 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b310 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
1b320 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
1b330 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
1b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b350 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
1b360 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
1b370 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
1b380 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b390 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1b3a0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1b3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b3d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
1b3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3f0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1b400 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1b410 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b420 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
1b430 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1b440 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1b450 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1b480 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
1b490 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4b0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1b4c0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b4f0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1b500 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1b510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b520 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1b530 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1b540 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b550 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1b560 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
1b570 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1b580 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1b590 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1b5a0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1b5b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1b5c0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1b5d0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1b5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1b5f0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1b600 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1b610 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1b620 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1b630 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1b640 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1b650 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1b660 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1b670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b680 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1b690 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b6a0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1b6b0 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
1b6c0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6e0 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75      "FinishBacku
1b6f0 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  p: {0}, exceptio
1b700 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
1b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b720 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
1b730 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1b740 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1b750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1b760 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1b770 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b780 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1b790 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1b7a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
1b7b0 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
1b7c0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1b7d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b7e0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1b7f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1b800 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1b810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1b820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b830 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
1b840 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
1b850 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b860 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1b870 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1b880 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1b890 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
1b8a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1b8b0 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1b8c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1b8d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1b920 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1b930 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1b940 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
1b950 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1b960 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1b970 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
1b980 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
1b990 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1b9a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b9b0 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
1b9c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1b9d0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
1b9e0 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ba30 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1ba40 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
1ba50 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1ba60 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
1ba70 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1ba80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ba90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1baa0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1bab0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1bac0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1bad0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bae0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1baf0 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
1bb00 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1bb10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1bb20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1bb30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1bb40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1bb90 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1bba0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1bbb0 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
1bbc0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1bbd0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1bbe0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bbf0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1bc00 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1bc10 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1bc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bc30 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
1bc40 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
1bc50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bc60 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1bc70 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1bc80 67 69 6f 6e 0d 0a 7d 0d 0a                       gion..}..