System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1032177316108e6477a2c01c5271a0e72cd0725e:


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: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
0280: 2e 53 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64  .Security;..#end
0290: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
02a0: 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74  stem.Runtime.Int
02b0: 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d  eropServices;...
02c0: 0a 23 69 66 20 28 4e 45 54 5f 34 30 20 7c 7c 20  .#if (NET_40 || 
02d0: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
02e0: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
02f0: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
0300: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 29 20 26 26  1 || NET_462) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
0360: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
0370: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69  FRAMEWORK..  usi
0380: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0390: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
03a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
03b0: 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55  FRAMEWORK || COU
03c0: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69  NT_HANDLE..  usi
03d0: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
03e0: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
03f0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58    using System.X
0400: 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ml;....  #region
0410: 20 44 65 62 75 67 20 44 61 74 61 20 53 74 61 74   Debug Data Stat
0420: 69 63 20 43 6c 61 73 73 0d 0a 23 69 66 20 43 4f  ic Class..#if CO
0430: 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c 20 44 45  UNT_HANDLE || DE
0440: 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  BUG..  /// <summ
0450: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
0460: 20 63 6c 61 73 73 20 65 6e 63 61 70 73 75 6c 61   class encapsula
0470: 74 65 73 20 73 6f 6d 65 20 74 72 61 63 6b 69 6e  tes some trackin
0480: 67 20 64 61 74 61 20 74 68 61 74 20 69 73 20 75  g data that is u
0490: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
04a0: 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 65 73  g..  /// and tes
04b0: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 0d 0a  ting purposes...
04c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04d0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
04e0: 74 69 63 20 63 6c 61 73 73 20 44 65 62 75 67 44  tic class DebugD
04f0: 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ata..  {..      
0500: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
0510: 44 61 74 61 0d 0a 20 20 20 20 20 20 23 72 65 67  Data..      #reg
0520: 69 6f 6e 20 43 72 69 74 69 63 61 6c 20 48 61 6e  ion Critical Han
0530: 64 6c 65 20 43 6f 75 6e 74 73 20 28 44 65 62 75  dle Counts (Debu
0540: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23  g Build Only)..#
0550: 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
0560: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
0570: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73 65 20   // NOTE: These 
0580: 63 6f 75 6e 74 73 20 72 65 70 72 65 73 65 6e 74  counts represent
0590: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
05a0: 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67  r of outstanding
05b0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
05c0: 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64 29 20   (non-disposed) 
05d0: 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 64  CriticalHandle d
05e0: 65 72 69 76 65 64 20 6f 62 6a 65 63 74 20 69 6e  erived object in
05f0: 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 2f  stances..      /
0600: 2f 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20  /       created 
0610: 62 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 20  by this library 
0620: 61 6e 64 20 61 72 65 20 70 72 69 6d 61 72 69 6c  and are primaril
0630: 79 20 66 6f 72 20 75 73 65 20 62 79 0d 0a 20 20  y for use by..  
0640: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
0650: 20 74 65 73 74 20 73 75 69 74 65 2e 20 20 54 68   test suite.  Th
0660: 65 73 65 20 63 6f 75 6e 74 73 20 61 72 65 20 69  ese counts are i
0670: 6e 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68  ncremented by th
0680: 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
0690: 20 20 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6e    associated con
06a0: 73 74 72 75 63 74 6f 72 73 20 61 6e 64 20 61 72  structors and ar
06b0: 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20 75 70  e decremented up
06c0: 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  on the..      //
06d0: 20 20 20 20 20 20 20 73 75 63 63 65 73 73 66 75         successfu
06e0: 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20  l completion of 
06f0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 52  the associated R
0700: 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a 20 20  eleaseHandle..  
0710: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 74      //       met
0720: 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d  hods...      //.
0730: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
0740: 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6e 6e 65  static int conne
0750: 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20  ctionCount;..   
0760: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
0770: 69 63 20 69 6e 74 20 73 74 61 74 65 6d 65 6e 74  ic int statement
0780: 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e  Count;..      in
0790: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e  ternal static in
07a0: 74 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a  t backupCount;..
07b0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
07c0: 74 61 74 69 63 20 69 6e 74 20 62 6c 6f 62 43 6f  tatic int blobCo
07d0: 75 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  unt;..#endif..  
07e0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
07f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
0800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0810: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0850: 6f 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64  on Settings Read
0860: 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42   Counts (Debug B
0870: 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20  uild Only)..#if 
0880: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f  DEBUG..      ///
0890: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
08a0: 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20    /// This lock 
08b0: 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65  is used to prote
08c0: 63 74 20 74 68 65 20 73 74 61 74 69 63 0d 0a 20  ct the static.. 
08d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
08e0: 65 66 3d 22 73 65 74 74 69 6e 67 52 65 61 64 43  ef="settingReadC
08f0: 6f 75 6e 74 73 22 20 2f 3e 20 66 69 65 6c 64 2e  ounts" /> field.
0900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0910: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0920: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0930: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
0940: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
0950: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
0960: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
09b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
09c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
09d0: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
09e0: 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20 63  tores the read c
09f0: 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75  ounts for the ru
0a00: 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74  ntime configurat
0a10: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  ion..      /// s
0a20: 65 74 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69  ettings.  This i
0a30: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e  nformation is on
0a40: 6c 79 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e  ly recorded when
0a50: 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65   compiled in the
0a60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62  ..      /// "Deb
0a70: 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ug" build config
0a80: 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  uration...      
0a90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0aa0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0ab0: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
0ac0: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74  string, int> set
0ad0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d  tingReadCounts;.
0ae0: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b30: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
0b40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0b50: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
0b60: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
0b70: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
0b80: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
0b90: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
0ba0: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 20 76 69   /// settings vi
0bb0: 61 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  a the XML config
0bc0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20 54  uration file.  T
0bd0: 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  his information 
0be0: 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 2f  is only..      /
0bf0: 2f 2f 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e  // recorded when
0c00: 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65   compiled in the
0c10: 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20 63   "Debug" build c
0c20: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20  onfiguration... 
0c30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
0c40: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
0c50: 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f  te static Dictio
0c60: 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74  nary<string, int
0c70: 3e 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61  > settingFileRea
0c80: 64 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66  dCounts;..#endif
0c90: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
0ca0: 6f 6e 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  on..      #endre
0cb0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
0d10: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0d20: 4d 65 74 68 6f 64 73 0d 0a 23 69 66 20 44 45 42  Methods..#if DEB
0d30: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0d50: 2f 2f 20 43 72 65 61 74 65 73 20 64 69 63 74 69  // Creates dicti
0d60: 6f 6e 61 72 69 65 73 20 75 73 65 64 20 74 6f 20  onaries used to 
0d70: 73 74 6f 72 65 20 74 68 65 20 72 65 61 64 20 63  store the read c
0d80: 6f 75 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f  ounts for each o
0d90: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  f..      /// the
0da0: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
0db0: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e  ration settings.
0dc0: 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20    These numbers 
0dd0: 61 72 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20  are used for..  
0de0: 20 20 20 20 2f 2f 2f 20 64 65 62 75 67 67 69 6e      /// debuggin
0df0: 67 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75  g and testing pu
0e00: 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20  rposes only...  
0e10: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0e20: 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  y>..      public
0e30: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69   static void Ini
0e40: 74 69 61 6c 69 7a 65 53 65 74 74 69 6e 67 52 65  tializeSettingRe
0e50: 61 64 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20 20  adCounts()..    
0e60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
0e70: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
0e80: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
0e90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
0ea0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
0eb0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61     // NOTE: Crea
0ec0: 74 65 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72  te the dictionar
0ed0: 69 65 73 20 6f 66 20 73 74 61 74 69 73 74 69 63  ies of statistic
0ee0: 73 20 74 68 61 74 20 77 69 6c 6c 0d 0a 20 20 20  s that will..   
0ef0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
0f00: 20 20 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20      contain the 
0f10: 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20  number of times 
0f20: 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c  each setting val
0f30: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
0f40: 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62    //       has b
0f50: 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20  een read...     
0f60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
0f70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
0f80: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
0f90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
0fb0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
0fc0: 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
0fd0: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d  string, int>();.
0fe0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
0ff0: 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65   if (settingFile
1000: 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75  ReadCounts == nu
1010: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1020: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
1030: 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  leReadCounts = n
1040: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
1050: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20  ring, int>();.. 
1060: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1070: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
1080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10e0: 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65       /// Increme
10f0: 6e 74 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  nts the read cou
1100: 6e 74 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  nt for the speci
1110: 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63 6f 6e  fied runtime con
1120: 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20  figuration..    
1130: 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 2e 20 20    /// setting.  
1140: 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72  These numbers ar
1150: 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  e used for debug
1160: 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e 67  ging and testing
1170: 20 70 75 72 70 6f 73 65 73 0d 0a 20 20 20 20 20   purposes..     
1180: 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20   /// only...    
1190: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
11b0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
11c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
11d0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
11e0: 6e 67 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a  ng being read...
11f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1200: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
1210: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46 69  aram name="viaFi
1220: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  le">..      /// 
1230: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
1240: 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e  specified settin
1250: 67 20 69 73 20 62 65 69 6e 67 20 72 65 61 64 20  g is being read 
1260: 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20  from the XML..  
1270: 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
1280: 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20  ation file...   
1290: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12a0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
12b0: 61 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d  atic void Increm
12c0: 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f  entSettingReadCo
12d0: 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  unt(..          
12e0: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
12f0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69 61          bool via
1300: 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  File..          
1310: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
1320: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
1330: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
1340: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1350: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1360: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1370: 45 3a 20 55 70 64 61 74 65 20 73 74 61 74 69 73  E: Update statis
1380: 74 69 63 73 20 66 6f 72 20 74 68 69 73 20 73 65  tics for this se
1390: 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20  tting value...  
13a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13c0: 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20   (viaFile)..    
13d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13f0: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
1400: 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c  adCounts != null
1410: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1420: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1440: 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20  t count;....    
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1460: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
1470: 65 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47  eReadCounts.TryG
1480: 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75  etValue(name, ou
1490: 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20  t count))..     
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b0: 20 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65       settingFile
14c0: 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  ReadCounts[name]
14d0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1510: 20 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65       settingFile
1520: 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e  ReadCounts.Add(n
1530: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  ame, 1);..      
1540: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1570: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1590: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
15a0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20  ngReadCounts != 
15b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
15c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e0: 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a    int count;....
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1600: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1610: 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47  gReadCounts.TryG
1620: 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75  etValue(name, ou
1630: 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20  t count))..     
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1650: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1660: 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63  Counts[name] = c
1670: 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20  ount + 1;..     
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e   settingReadCoun
16c0: 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b  ts.Add(name, 1);
16d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1700: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65    }..      }..#e
1710: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
1720: 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e  region..  }..#en
1730: 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f  dif..  #endregio
1740: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1790: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
17a0: 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  n Helper Methods
17b0: 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
17c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17d0: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
17e0: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
17f0: 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74 68   some methods th
1800: 61 74 20 61 72 65 20 73 68 61 72 65 64 20 62 65  at are shared be
1810: 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f  tween the..  ///
1820: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
1830: 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20 6f  pre-loader and o
1840: 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a 20  ther classes... 
1850: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1860: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
1870: 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72 4d  ic class HelperM
1880: 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20  ethods..  {..   
1890: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
18a0: 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f  te Data..      /
18b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
18c0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
18d0: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
18e0: 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20  tect the static 
18f0: 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e  <see cref="isMon
1900: 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20  o" /> field...  
1910: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1920: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
1930: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
1940: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
1950: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1960: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
1970: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
19c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
19e0: 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72 65  type is only pre
19f0: 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e  sent when runnin
1a00: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
1a10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1a20: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1a30: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
1a40: 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69  string MonoRunti
1a50: 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52  meType = "Mono.R
1a60: 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20  untime";....    
1a70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1ac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
1ae0: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
1af0: 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  er we are runnin
1b00: 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74  g on Mono.  Init
1b10: 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69  ially null, it i
1b20: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  s..      /// set
1b30: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
1b40: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
1b50: 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73  thod on its firs
1b60: 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20  t call.  Later, 
1b70: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73  it..      /// is
1b80: 20 72 65 74 75 72 6e 65 64 20 76 65 72 62 61 74   returned verbat
1b90: 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  im by the <see c
1ba0: 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20  ref="IsMono" /> 
1bb0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
1bc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1bd0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1be0: 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f  tic bool? isMono
1bf0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
1c00: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1c10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c60: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
1c70: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
1c80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1c90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
1ca0: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
1cb0: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
1cc0: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
1cd0: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
1ce0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1cf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1d00: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1d10: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
1d20: 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75  s assembly is ru
1d30: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
1d40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1d50: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
1d60: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
1d70: 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20  IsMono()..      
1d80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
1d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1db0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
1dc0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1dd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1de0: 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e         if (isMon
1df0: 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  o == null)..    
1e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e10: 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65    isMono = (Type
1e20: 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e  .GetType(MonoRun
1e30: 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c  timeType) != nul
1e40: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
1e50: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e60: 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20  (bool)isMono;.. 
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1e80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e90: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1ea0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1eb0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
1ec0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
1ed0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ee0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1ef0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
1f00: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1f10: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f60: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49  .      #region I
1f70: 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
1f80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1f90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1fa0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
1fb0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
1fc0: 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  s is running on 
1fd0: 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64 6f  one of the Windo
1fe0: 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73  ws..      /// [s
1ff0: 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a  ub-]platforms...
2000: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2010: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2020: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2030: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68   /// Non-zero wh
2040: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69  en running on Wi
2050: 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73 65  ndows; otherwise
2060: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
2070: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2080: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
2090: 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64  atic bool IsWind
20a0: 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ows()..      {..
20b0: 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66 6f            Platfo
20c0: 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64 20  rmID platformId 
20d0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53  = Environment.OS
20e0: 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d  Version.Platform
20f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
2100: 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d  f ((platformId =
2110: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
2120: 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  32S) ||..       
2130: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
2140: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
2150: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
2160: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
2170: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
2180: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
2190: 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  NT) ||..        
21a0: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
21b0: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
21c0: 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20 20  WinCE))..       
21d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
21e0: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
21f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
2200: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
2210: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
2220: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2270: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
2280: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2290: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 77   /// This is a w
22a0: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
22b0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
22c0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e 46  e cref="String.F
22d0: 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72 6f  ormat(IFormatPro
22e0: 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a  vider,String,Obj
22f0: 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f  ect[])" /> metho
2300: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e  d...      /// On
2310: 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f   Mono, it has to
2320: 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64   call the method
2330: 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f 75   overload withou
2340: 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  t the..      ///
2350: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f 72   <see cref="IFor
2360: 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e 20  matProvider" /> 
2370: 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20 74  parameter, due t
2380: 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e  o a bug in Mono.
2390: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
23a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
23b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
23c0: 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 20  rovider">..     
23d0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73 65   /// This is use
23e0: 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73 70  d for culture-sp
23f0: 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69 6e  ecific formattin
2400: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
2410: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2420: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
2430: 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f  ormat">..      /
2440: 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74  // The format st
2450: 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ring...      ///
2460: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2470: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2480: 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20 20  ="args">..      
2490: 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68 65  /// An array the
24a0: 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d   objects to form
24b0: 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  at...      /// <
24c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
24d0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
24e0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
24f0: 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20  lting string... 
2500: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2510: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
2520: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
2530: 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  g StringFormat(.
2540: 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f 72 6d  .          IForm
2550: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
2560: 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  der,..          
2570: 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a  string format,..
2580: 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
2590: 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a   object[] args..
25a0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
25b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25c0: 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20  if (IsMono()).. 
25d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25e0: 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  urn String.Forma
25f0: 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b  t(format, args);
2600: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
2610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2620: 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f  return String.Fo
2630: 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20 66  rmat(provider, f
2640: 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20  ormat, args);.. 
2650: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
2660: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20  ndregion..  }.. 
2670: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26d0: 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69  ..  #region Nati
26e0: 76 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70 65  ve Library Helpe
26f0: 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c  r Class..  /// <
2700: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
2710: 54 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73  This static clas
2720: 73 20 70 72 6f 76 69 64 65 73 20 61 20 74 68 69  s provides a thi
2730: 6e 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  n wrapper around
2740: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
2750: 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69  ary..  /// loadi
2760: 6e 67 20 66 65 61 74 75 72 65 73 20 6f 66 20 74  ng features of t
2770: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c  he underlying pl
2780: 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c  atform...  /// <
2790: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74  /summary>..  int
27a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
27b0: 73 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79  ss NativeLibrary
27c0: 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20  Helper..  {..   
27d0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
27e0: 74 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20 20  te Delegates..  
27f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2800: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
2810: 73 20 64 65 6c 65 67 61 74 65 20 69 73 20 75 73  s delegate is us
2820: 65 64 20 74 6f 20 77 72 61 70 20 74 68 65 20 63  ed to wrap the c
2830: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e  oncept of loadin
2840: 67 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  g a native..    
2850: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62    /// library, b
2860: 61 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e  ased on a file n
2870: 61 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 69  ame, and returni
2880: 6e 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f  ng the loaded mo
2890: 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  dule..      /// 
28a0: 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  handle...      /
28b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28d0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
28e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
28f0: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2900: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2910: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
2920: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2930: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2940: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2950: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
2960: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
2970: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
2980: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
2990: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
29a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
29b0: 76 61 74 65 20 64 65 6c 65 67 61 74 65 20 49 6e  vate delegate In
29c0: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
29d0: 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
29e0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
29f0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a  Name..      );..
2a00: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
2a70: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
2a80: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
2a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2aa0: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
2ab0: 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66   load the specif
2ac0: 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ied native libra
2ad0: 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68  ry file using th
2ae0: 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f  e Win32..      /
2af0: 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f  // API...      /
2b00: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2b10: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2b20: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
2b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2b40: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2b50: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2b60: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
2b70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2b80: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2b90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2ba0: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
2bb0: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
2bc0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
2bd0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
2be0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2bf0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2c00: 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50  vate static IntP
2c10: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69  tr LoadLibraryWi
2c20: 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  n32(..          
2c30: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
2c40: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
2c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c60: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
2c70: 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32  tiveMethodsWin32
2c80: 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c  .LoadLibrary(fil
2c90: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
2ca0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2d00: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2d10: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
2d20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2d30: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
2d40: 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69  o load the speci
2d50: 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72  fied native libr
2d60: 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74  ary file using t
2d70: 68 65 20 50 4f 53 49 58 0d 0a 20 20 20 20 20 20  he POSIX..      
2d80: 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20  /// API...      
2d90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2da0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2db0: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
2dc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2dd0: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
2de0: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
2df0: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
2e00: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2e10: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2e20: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
2e30: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
2e40: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
2e50: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
2e60: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
2e70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
2e80: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
2e90: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
2ea0: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 50  Ptr LoadLibraryP
2eb0: 6f 73 69 78 28 0d 0a 20 20 20 20 20 20 20 20 20  osix(..         
2ec0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
2ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
2ee0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ef0: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
2f00: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
2f10: 78 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20 20 20 20  x.dlopen(..     
2f20: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
2f30: 65 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  e, UnsafeNativeM
2f40: 65 74 68 6f 64 73 50 6f 73 69 78 2e 52 54 4c 44  ethodsPosix.RTLD
2f50: 5f 44 45 46 41 55 4c 54 29 3b 0d 0a 20 20 20 20  _DEFAULT);..    
2f60: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
2f70: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2f80: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
2fe0: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
2ff0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3000: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3010: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
3020: 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
3030: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66  native library f
3040: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
3050: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3060: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
3070: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
3080: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
3090: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
30a0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
30b0: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
30c0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30d0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
30e0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
30f0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
3100: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
3110: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
3120: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
3130: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
3140: 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  s>..      public
3150: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c   static IntPtr L
3160: 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20 20  oadLibrary(..   
3170: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
3180: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
3190: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
31a0: 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62 72          LoadLibr
31b0: 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  aryCallback call
31c0: 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61  back = LoadLibra
31d0: 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20  ryWin32;....#if 
31e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
31f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
3200: 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70 65        if (!Helpe
3210: 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f  rMethods.IsWindo
3220: 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ws())..         
3230: 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20       callback = 
3240: 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78  LoadLibraryPosix
3250: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
3260: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
3270: 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29  llback(fileName)
3280: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
3290: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
32a0: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
32b0: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
32c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3300: 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
3310: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
3320: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
3330: 20 43 6c 61 73 73 20 28 50 4f 53 49 58 29 0d 0a   Class (POSIX)..
3340: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
3350: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
3360: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3370: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73  .  /// This clas
3380: 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76  s declares P/Inv
3390: 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63  oke methods to c
33a0: 61 6c 6c 20 6e 61 74 69 76 65 20 50 4f 53 49 58  all native POSIX
33b0: 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f   APIs...  /// </
33c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b 53 75 70  summary>..  [Sup
33d0: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
33e0: 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 20 20 69  deSecurity]..  i
33f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
3400: 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76  lass UnsafeNativ
3410: 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 0d 0a 20  eMethodsPosix.. 
3420: 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f   {..      //////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3470: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3480: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3490: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
34a0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20  P/Invoke method 
34b0: 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e  that wraps the n
34c0: 61 74 69 76 65 20 55 6e 69 78 20 64 6c 6f 70 65  ative Unix dlope
34d0: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  n..      /// fun
34e0: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
34f0: 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74  POSIX documentat
3500: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
3510: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
3520: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
3530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3540: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3550: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
3560: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
3570: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
3580: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
3590: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
35a0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
35b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
35c0: 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20  ame="mode">..   
35d0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74     /// This must
35e0: 20 62 65 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f   be a combinatio
35f0: 6e 20 6f 66 20 74 68 65 20 69 6e 64 69 76 69 64  n of the individ
3600: 75 61 6c 20 62 69 74 20 66 6c 61 67 73 20 52 54  ual bit flags RT
3610: 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20  LD_LAZY,..      
3620: 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54  /// RTLD_NOW, RT
3630: 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f  LD_GLOBAL, and/o
3640: 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20  r RTLD_LOCAL... 
3650: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3660: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3670: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
3680: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
3690: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
36a0: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
36b0: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
36c0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
36d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f    [DllImport("__
36f0: 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e 74 72 79  Internal", Entry
3700: 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22  Point = "dlopen"
3710: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c  ,..          Cal
3720: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
3730: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
3740: 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
3750: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69  t = CharSet.Ansi
3760: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  ,..          Bes
3770: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
3780: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
3790: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
37a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65  e,..          Se
37b0: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75  tLastError = tru
37c0: 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  e)]..      inter
37d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
37e0: 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28  n IntPtr dlopen(
37f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
3800: 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20   int mode);.... 
3810: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3870: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
3880: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
3890: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
38a0: 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79  ion calls lazily
38b0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
38c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
38d0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
38e0: 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78  t RTLD_LAZY = 0x
38f0: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  1;....      ////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3940: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3950: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3960: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
3970: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
3980: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
3990: 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20   immediately... 
39a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
39b0: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
39c0: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
39d0: 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d  LD_NOW = 0x2;...
39e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
39f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3a40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3a50: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
3a60: 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d  open(), make sym
3a70: 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76  bols globally av
3a80: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
3a90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3aa0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
3ab0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c  onst int RTLD_GL
3ac0: 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d  OBAL = 0x100;...
3ad0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 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: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3b30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3b40: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
3b50: 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65  open(), opposite
3b60: 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c   of RTLD_GLOBAL,
3b70: 20 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74   and the default
3b80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
3b90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
3ba0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
3bb0: 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30  t RTLD_LOCAL = 0
3bc0: 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  x000;....      /
3bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3c20: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3c30: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
3c40: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
3c50: 74 68 65 20 64 65 66 61 75 6c 74 73 20 75 73 65  the defaults use
3c60: 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e  d by this class.
3c70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3c80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
3c90: 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20 69 6e  ternal  const in
3ca0: 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d  t RTLD_DEFAULT =
3cb0: 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44   RTLD_NOW | RTLD
3cc0: 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23  _GLOBAL;..  }..#
3cd0: 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
3ce0: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
3d40: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
3d50: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
3d60: 61 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e 33  atic Class (Win3
3d70: 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  2)..  /// <summa
3d80: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
3d90: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
3da0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
3db0: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 57  to call native W
3dc0: 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f  in32 APIs...  //
3dd0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
3de0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3df0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3e00: 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67  [SuppressUnmanag
3e10: 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d  edCodeSecurity].
3e20: 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72  .#endif..  inter
3e30: 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
3e40: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
3e50: 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a  hodsWin32..  {..
3e60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3ec0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3ed0: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
3ee0: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
3ef0: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
3f00: 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72  e Win32 LoadLibr
3f10: 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ary..      /// f
3f20: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
3f30: 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
3f40: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
3f50: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
3f60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
3f70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
3f80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3f90: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3fa0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
3fb0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
3fc0: 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  f the executable
3fd0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
3fe0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
3ff0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4000: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
4010: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
4020: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
4030: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
4040: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
4050: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4060: 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41  turns>..#if !PLA
4070: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4080: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44  MEWORK..      [D
4090: 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c  llImport("kernel
40a0: 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  32",..#else..   
40b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
40c0: 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66  oredll",..#endif
40d0: 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  .. CallingConven
40e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
40f0: 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c  nvention.Winapi,
4100: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
4110: 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50  et.Auto,..#if !P
4120: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4130: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4140: 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69      BestFitMappi
4150: 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f  ng = false, Thro
4160: 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61  wOnUnmappableCha
4170: 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69  r = true,..#endi
4180: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74  f..          Set
4190: 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65  LastError = true
41a0: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
41b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
41c0: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
41d0: 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  ary(string fileN
41e0: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ame);....      /
41f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4230: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
4240: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
4250: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
4260: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4270: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
4280: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
4290: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
42a0: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
42b0: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
42c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
42d0: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
42e0: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
42f0: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
4300: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
4310: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
4320: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4330: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4340: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
4350: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
4360: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
4370: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
4380: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
4390: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
43a0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
43b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
43c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72   [DllImport("cor
43d0: 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  edll", CallingCo
43e0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
43f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e  ngConvention.Win
4400: 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  api)]..      int
4410: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4420: 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74  ern void GetSyst
4430: 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45  emInfo(out SYSTE
4440: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
4450: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  o);....      ///
4460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44a0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
44b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
44c0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d     /// This enum
44d0: 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73  eration contains
44e0: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
44f0: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f  lues for the pro
4500: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
4510: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  / architecture f
4520: 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74  ield of the syst
4530: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
4540: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
4550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4560: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
4570: 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72  enum ProcessorAr
4580: 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68  chitecture : ush
4590: 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57  ort /* COMPAT: W
45a0: 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  in32. */..      
45b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74  {..          Int
45c0: 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20  el = 0,..       
45d0: 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20     MIPS = 1,..  
45e0: 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20          Alpha = 
45f0: 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f  2,..          Po
4600: 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20  werPC = 3,..    
4610: 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a        SHx = 4,..
4620: 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20            ARM = 
4630: 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41  5,..          IA
4640: 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20  64 = 6,..       
4650: 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d     Alpha64 = 7,.
4660: 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20  .          MSIL 
4670: 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 8,..          
4680: 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20  AMD64 = 9,..    
4690: 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69        IA32_on_Wi
46a0: 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20  n64 = 10,..     
46b0: 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
46c0: 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a  xFFFF..      }..
46d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
46e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46f0: 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
4730: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4740: 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65  / This structure
4750: 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d   contains inform
4760: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
4770: 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72  current computer
4780: 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f  . This..      //
4790: 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70  / includes the p
47a0: 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70  rocessor type, p
47b0: 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79  age size, memory
47c0: 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e   addresses, etc.
47d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
47e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53  mmary>..      [S
47f0: 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
4800: 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
4810: 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  l)]..      inter
4820: 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53 54 45  nal struct SYSTE
4830: 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d  M_INFO..      {.
4840: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
4850: 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  c ProcessorArchi
4860: 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73 73  tecture wProcess
4870: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
4880: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
4890: 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72 76  c ushort wReserv
48a0: 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ed; /* NOT USED 
48b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
48c0: 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67 65  blic uint dwPage
48d0: 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Size; /* NOT USE
48e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
48f0: 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70  public IntPtr lp
4900: 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69  MinimumApplicati
4910: 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f  onAddress; /* NO
4920: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
4930: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
4940: 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c  tr lpMaximumAppl
4950: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
4960: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
4970: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4980: 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72   uint dwActivePr
4990: 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20  ocessorMask; /* 
49a0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
49b0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
49c0: 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f  nt dwNumberOfPro
49d0: 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20  cessors; /* NOT 
49e0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
49f0: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
4a00: 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20  wProcessorType; 
4a10: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
4a20: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4a30: 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69   uint dwAllocati
4a40: 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f  onGranularity; /
4a50: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4a60: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
4a70: 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f  ushort wProcesso
4a80: 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55  rLevel; /* NOT U
4a90: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
4aa0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
4ab0: 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69  wProcessorRevisi
4ac0: 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  on; /* NOT USED 
4ad0: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  */..      }..#en
4ae0: 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64  dif..  }..  #end
4af0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
4b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
4b50: 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64  region Unmanaged
4b60: 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73   Interop Methods
4b70: 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 53   Static Class (S
4b80: 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73  QLite)..  /// <s
4b90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
4ba0: 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72  his class declar
4bb0: 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  es P/Invoke meth
4bc0: 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69  ods to call nati
4bd0: 76 65 20 53 51 4c 69 74 65 20 41 50 49 73 2e 0d  ve SQLite APIs..
4be0: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
4bf0: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
4c00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4c10: 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  K..  [SuppressUn
4c20: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
4c30: 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ity]..#endif..  
4c40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4c50: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
4c60: 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a  veMethods..  {..
4c70: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 68        #region Sh
4c80: 61 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c 69  ared Native SQLi
4c90: 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
4ca0: 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
4cb0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
4cc0: 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
4cd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4ce0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
4cf0: 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20   file extension 
4d00: 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69 63  used for dynamic
4d10: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73 2e   link libraries.
4d20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4d30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
4d40: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
4d50: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c  donly string Dll
4d60: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20  FileExtension = 
4d70: 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20  ".dll";....     
4d80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
4dd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4de0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
4df0: 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73  ile extension us
4e00: 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20 63  ed for the XML c
4e10: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
4e20: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
4e30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4e40: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
4e50: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 43  eadonly string C
4e60: 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69  onfigFileExtensi
4e70: 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b 0d  on = ".config";.
4e80: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
4ee0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4ef0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6e  // This is the n
4f00: 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
4f10: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
4f20: 65 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68  e specific to th
4f30: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79 73  e..      /// Sys
4f40: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
4f50: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
4f60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4f70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
4f80: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
4f90: 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46  tring XmlConfigF
4fa0: 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20  ileName =..     
4fb0: 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61       typeof(Unsa
4fc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29  feNativeMethods)
4fd0: 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c 6c  .Namespace + Dll
4fe0: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b 0d  FileExtension +.
4ff0: 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69  .          Confi
5000: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d  gFileExtension;.
5010: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5060: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5070: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5080: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 58  // This is the X
5090: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 72 69 6f  ML configuratrio
50a0: 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74 68 61  n file token tha
50b0: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
50c0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
50d0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
50e0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
50f0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
5100: 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  g the XML config
5110: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
5120: 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  // file...      
5130: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5140: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
5150: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
5160: 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 44 69  ring XmlConfigDi
5170: 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a  rectoryToken =..
5180: 20 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c            "%PreL
5190: 6f 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e  oadSQLite_XmlCon
51a0: 66 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b 0d  figDirectory%";.
51b0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
51c0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
51d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
5220: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
5230: 6e 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f 70  nstants (Desktop
5240: 20 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29   Framework Only)
5250: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5270: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5280: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5290: 20 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76   This is the env
52a0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
52b0: 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c  e token that wil
52c0: 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69  l be replaced wi
52d0: 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  th..      /// th
52e0: 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74 68  e qualified path
52f0: 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72   to the director
5300: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69  y containing thi
5310: 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  s assembly...   
5320: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5330: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
5340: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
5350: 20 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c 79   string Assembly
5360: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d  DirectoryToken =
5370: 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72  ..          "%Pr
5380: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73 73 65  eLoadSQLite_Asse
5390: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 25 22 3b  mblyDirectory%";
53a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
53b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53f0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5400: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5410: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
5420: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
5430: 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20  able token that 
5440: 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64  will be replaced
5450: 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
5460: 2f 2f 2f 20 61 62 62 72 65 76 69 61 74 69 6f 6e  /// abbreviation
5470: 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 66   of the target f
5480: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
5490: 74 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69 61  te value associa
54a0: 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
54b0: 2f 2f 2f 20 74 68 69 73 20 61 73 73 65 6d 62 6c  /// this assembl
54c0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
54d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
54e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
54f0: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 54  eadonly string T
5500: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f  argetFrameworkTo
5510: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
5520: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
5530: 5f 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  _TargetFramework
5540: 25 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  %";..#endif..   
5550: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
5560: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
5570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55b0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
55c0: 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
55d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
55e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
55f0: 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64  his lock is used
5600: 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20   to protect the 
5610: 73 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e 61  static _SQLiteNa
5620: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
5630: 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5f  me,..      /// _
5640: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
5650: 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70 72  leHandle, and pr
5660: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5670: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
5680: 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lds...      /// 
5690: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
56a0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
56b0: 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
56c0: 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20   staticSyncRoot 
56d0: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
56e0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
56f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5730: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5740: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5750: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
5760: 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 6d 61  ry stores the ma
5770: 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70  ppings between p
5780: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
5790: 63 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  cture..      ///
57a0: 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66   names and platf
57b0: 6f 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68 65 73  orm names.  Thes
57c0: 65 20 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6e  e mappings are n
57d0: 6f 77 20 75 73 65 64 20 66 6f 72 20 74 77 6f 0d  ow used for two.
57e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f  .      /// purpo
57f0: 73 65 73 2e 20 20 46 69 72 73 74 2c 20 74 68 65  ses.  First, the
5800: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65  y are used to de
5810: 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 61  termine if the a
5820: 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20  ssembly code..  
5830: 20 20 20 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f      /// base sho
5840: 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74  uld be used inst
5850: 65 61 64 20 6f 66 20 74 68 65 20 6c 6f 63 61 74  ead of the locat
5860: 69 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f 6e 20  ion, based upon 
5870: 77 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20  whether one..   
5880: 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f     /// or more o
5890: 66 20 74 68 65 20 6e 61 6d 65 64 20 73 75 62 2d  f the named sub-
58a0: 64 69 72 65 63 74 6f 72 69 65 73 20 65 78 69 73  directories exis
58b0: 74 20 77 69 74 68 69 6e 20 74 68 65 20 61 73 73  t within the ass
58c0: 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20  embly code..    
58d0: 20 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53 65 63    /// base.  Sec
58e0: 6f 6e 64 2c 20 74 68 65 79 20 61 72 65 20 75 73  ond, they are us
58f0: 65 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20  ed to assist in 
5900: 6c 6f 61 64 69 6e 67 20 74 68 65 20 61 70 70 72  loading the appr
5910: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 2f  opriate..      /
5920: 2f 2f 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f  // SQLite intero
5930: 70 20 61 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20  p assembly into 
5940: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
5950: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
5960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5970: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
5980: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
5990: 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63  ng, string> proc
59a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
59b0: 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 20 20 20  ePlatforms;..   
59c0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
59d0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
59e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5a30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5a40: 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d   For now, this m
5a50: 65 74 68 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c  ethod simply cal
5a60: 6c 73 20 74 68 65 20 49 6e 69 74 69 61 6c 69 7a  ls the Initializ
5a70: 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  e method...     
5a80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5a90: 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 55 6e  .      static Un
5aa0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
5ab0: 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  s()..      {..  
5ac0: 20 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69          Initiali
5ad0: 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ze();..      }..
5ae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
5b40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5b50: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e  / Attempts to in
5b60: 69 74 69 61 6c 69 7a 65 20 74 68 69 73 20 63 6c  itialize this cl
5b70: 61 73 73 20 62 79 20 70 72 65 2d 6c 6f 61 64 69  ass by pre-loadi
5b80: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
5b90: 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Lite..      /// 
5ba0: 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 65 20  library for the 
5bb0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
5bc0: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
5bd0: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
5be0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5bf0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
5c00: 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64  rnal static void
5c10: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
5c20: 20 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49       {..#if SQLI
5c30: 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55  TE_STANDARD || U
5c40: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c  SE_INTEROP_DLL |
5c50: 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  | PLATFORM_COMPA
5c60: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66  CTFRAMEWORK..#if
5c70: 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f   PRELOAD_NATIVE_
5c80: 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20  LIBRARY..       
5c90: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5ca0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
5cb0: 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69   "No_PreLoadSQLi
5cc0: 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  te" environment 
5cd0: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
5ce0: 28 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  (to..          /
5cf0: 2f 20 20 20 20 20 20 20 61 6e 79 74 68 69 6e 67  /       anything
5d00: 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20  ), skip all our 
5d10: 73 70 65 63 69 61 6c 20 63 6f 64 65 20 61 6e 64  special code and
5d20: 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d   simply return..
5d30: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
5d40: 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74           if (Get
5d50: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f  SettingValue("No
5d60: 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c  _PreLoadSQLite",
5d70: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
5d80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
5d90: 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  eturn;..#endif..
5da0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
5db0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
5dc0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
5dd0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
5de0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5df0: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
5e00: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 73 74 61   the list of sta
5e10: 74 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c  tistics that wil
5e20: 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  l contain the.. 
5e30: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5e40: 20 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65    number of time
5e50: 73 20 65 61 63 68 20 73 65 74 74 69 6e 67 20 76  s each setting v
5e60: 61 6c 75 65 20 68 61 73 20 62 65 65 6e 20 72 65  alue has been re
5e70: 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ad...          /
5e80: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  /..          Deb
5e90: 75 67 44 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a  ugData.Initializ
5ea0: 65 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  eSettingReadCoun
5eb0: 74 73 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ts();..#endif.. 
5ec0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
5ed0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
5ee0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
5ef0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
5f00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5f10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5f20: 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61       // TODO: Ma
5f30: 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69 73  ke sure this lis
5f40: 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66 20  t is updated if 
5f50: 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a 20  the supported.. 
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5f70: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20        processor 
5f80: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
5f90: 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f  es and/or platfo
5fa0: 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20  rm names..      
5fb0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5fc0: 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20   changes...     
5fd0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5fe0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
5ff0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
6000: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d  turePlatforms ==
6010: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6020: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6030: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6050: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
6060: 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f 63   the map of proc
6070: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
6080: 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20  re names..      
6090: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
60a0: 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d       to platform
60b0: 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20 63   names using a c
60c0: 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20  ase-insensitive 
60d0: 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  string..        
60e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
60f0: 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20     comparer...  
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6110: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
6120: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
6130: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
6140: 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20 20  orms =..        
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
6160: 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
6170: 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20  ing, string>(.. 
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
61a0: 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49  omparer.OrdinalI
61b0: 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20  gnoreCase);.... 
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
61e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
61f0: 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20 6f  Setup the list o
6200: 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  f platform names
6210: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
6220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6230: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
6240: 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63 65   supported proce
6250: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
6260: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
6270: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
6290: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
62a0: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
62b0: 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29 3b  "x86", "Win32");
62c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
62d0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
62e0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
62f0: 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c 20  ms.Add("AMD64", 
6300: 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20  "x64");..       
6310: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
6320: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
6330: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 49  Platforms.Add("I
6340: 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22 29  A64", "Itanium")
6350: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6360: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
6370: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
6380: 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20 22  rms.Add("ARM", "
6390: 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20 20  WinCE");..      
63a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66          }....#if
63b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
63c0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
63d0: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
63e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
63f0: 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41  ..#if PRELOAD_NA
6400: 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20  TIVE_LIBRARY..  
6410: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
6420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6430: 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62   BUGBUG: What ab
6440: 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63  out other applic
6450: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a  ation domains?..
6460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6480: 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74 69 76  if (_SQLiteNativ
6490: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d  eModuleHandle ==
64a0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
64b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
64c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64d0: 20 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72    string baseDir
64e0: 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  ectory = null;..
64f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6500: 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
6510: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
6520: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
6530: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49              /* I
6540: 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20  GNORED */..     
6550: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 61               Sea
6560: 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28  rchForDirectory(
6570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6580: 20 20 20 20 20 20 20 20 72 65 66 20 62 61 73 65          ref base
6590: 44 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20 70  Directory, ref p
65a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
65b0: 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ture);....      
65c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
65d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65e0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
65f0: 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74  pt to pre-load t
6600: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
6610: 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20 20 20  ibrary (or..    
6620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6630: 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20 61         interop a
6640: 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f  ssembly) and sto
6650: 72 65 20 62 6f 74 68 20 74 68 65 20 66 69 6c 65  re both the file
6660: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
6670: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6680: 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64    and native mod
6690: 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c  ule handle for l
66a0: 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20 20 20  ater usage...   
66b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
66c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
66d0: 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20       /* IGNORED 
66e0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
66f0: 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53 51 4c        PreLoadSQL
6700: 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20  iteDll(..       
6710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
6720: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72  aseDirectory, pr
6730: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
6740: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
6750: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
6760: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
6770: 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  uleFileName,..  
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e      ref _SQLiteN
67a0: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
67b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
67c0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
67d0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
67e0: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
67f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
6840: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6850: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f  y>..      /// Co
6860: 6d 62 69 6e 65 73 20 74 77 6f 20 70 61 74 68 20  mbines two path 
6870: 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  strings...      
6880: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6890: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
68a0: 20 6e 61 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a   name="path1">..
68b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
68c0: 72 73 74 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75  rst path -OR- nu
68d0: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
68e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
68f0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6900: 70 61 74 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f  path2">..      /
6910: 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  // The second pa
6920: 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20  th -OR- null... 
6930: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6940: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
6950: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
6960: 2f 20 54 68 65 20 63 6f 6d 62 69 6e 65 64 20 70  / The combined p
6970: 61 74 68 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20  ath string -OR- 
6980: 6e 75 6c 6c 20 69 66 20 62 6f 74 68 20 6f 66 20  null if both of 
6990: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 70 61 74  the original pat
69a0: 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  h..      /// str
69b0: 69 6e 67 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a  ings are null...
69c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
69d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
69e0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
69f0: 67 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  g MaybeCombinePa
6a00: 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  th(..          s
6a10: 74 72 69 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20  tring path1,..  
6a20: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
6a30: 61 74 68 32 0d 0a 20 20 20 20 20 20 20 20 20 20  ath2..          
6a40: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
6a50: 20 20 20 20 20 20 69 66 20 28 70 61 74 68 31 20        if (path1 
6a60: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
6a70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6a80: 20 20 20 20 20 69 66 20 28 70 61 74 68 32 20 21       if (path2 !
6a90: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
6aa0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6ab0: 6e 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70  n Path.Combine(p
6ac0: 61 74 68 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20  ath1, path2);.. 
6ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
6ae0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
6af0: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74 68       return path
6b00: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  1;..          }.
6b10: 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d  .          else.
6b20: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
6b30: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6b40: 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path2 != null)..
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b60: 20 20 72 65 74 75 72 6e 20 70 61 74 68 32 3b 0d    return path2;.
6b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
6b80: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
6b90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
6ba0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
6bb0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
6bc0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
6c10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6c20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
6c30: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
6c40: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
6c50: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
6c60: 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
6c70: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  y..      /// con
6c80: 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61  taining the mana
6c90: 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ged System.Data.
6ca0: 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74  SQLite component
6cb0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
6cc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6cd0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6ce0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c       /// The XML
6cf0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
6d00: 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75  ile name -OR- nu
6d10: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
6d20: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20  be determined.. 
6d30: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73       /// or does
6d40: 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20   not exist...   
6d50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
6d60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
6d70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
6d80: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
6d90: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
6da0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
6db0: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
6dc0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
6dd0: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21  leName;....#if !
6de0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6df0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
6e00: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
6e10: 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
6e20: 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
6e30: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
6e40: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61     fileName = Ma
6e50: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
6e60: 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
6e70: 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
6e80: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
6e90: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
6ea0: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
6eb0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
6ec0: 4e 61 6d 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  Name;..#endif...
6ed0: 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63  .          direc
6ee0: 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62  tory = GetAssemb
6ef0: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
6f00: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
6f10: 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e  me = MaybeCombin
6f20: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
6f30: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
6f40: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
6f50: 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
6f60: 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6f80: 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  rn fileName;....
6f90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6fa0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
6fb0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7000: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
7010: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7020: 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
7030: 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
7040: 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f  supported XML co
7050: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
7060: 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f   tokens..      /
7070: 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73  // with their as
7080: 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e  sociated values.
7090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
70a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
70b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
70c0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
70d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
70e0: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
70f0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e  ration file bein
7100: 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  g read...      /
7110: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7120: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7130: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
7140: 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67     /// A setting
7150: 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d   value read from
7160: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
7170: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
7180: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
7190: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
71a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
71b0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
71c0: 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  e <paramref name
71d0: 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c  ="value" /> will
71e0: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
71f0: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
7200: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
7210: 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64   tokens replaced
7220: 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c  .  No return val
7230: 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a  ue is reserved..
7240: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64        /// to ind
7250: 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20  icate an error. 
7260: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e   This method can
7270: 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20  not fail...     
7280: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
7290: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
72a0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70  tatic string Rep
72b0: 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  laceXmlConfigFil
72c0: 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20  eTokens(..      
72d0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
72e0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
72f0: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
7300: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
7310: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
7320: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
7330: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
7340: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7350: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7360: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
7370: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
7380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7390: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
73a0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
73b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73d0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
73e0: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
73f0: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
7400: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7420: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
7430: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
7440: 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
7460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7470: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
7480: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
7490: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
74a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74b0: 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63    XmlConfigDirec
74c0: 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
74d0: 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
74e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
74f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7500: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
7510: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
7520: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
7530: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
7540: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
7550: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
7560: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
7570: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
7580: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
7590: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
75a0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
75b0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
75c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75d0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
75e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
7610: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
7620: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
7630: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
7640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7650: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
7660: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
7670: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
7680: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76a0: 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
76b0: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
76c0: 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20  place XML " +.. 
76d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f               "co
76f0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
7700: 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a   \"{0}\" tokens:
7710: 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7730: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
7740: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
7750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7760: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7780: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
7790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
77a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
77c0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77e0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
77f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
7810: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
7820: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
7830: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
7840: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
78a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
78b0: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
78c0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
78d0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
78e0: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
78f0: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
7900: 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d  /// specified XM
7910: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
7920: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
7930: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7940: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7950: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
7960: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
7970: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
7980: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
7990: 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   to read...     
79a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
79b0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
79c0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
79d0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
79e0: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
79f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
7a00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
7a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
7a20: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
7a30: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
7a40: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
7a50: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
7a60: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
7a70: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
7a80: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
7a90: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
7aa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7ab0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7ac0: 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a  name="expand">..
7ad0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
7ae0: 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79  ro to expand any
7af0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
7b00: 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73  iable references
7b10: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20   contained in.. 
7b20: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74       /// the set
7b30: 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65  ting value to be
7b40: 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73   returned.  This
7b50: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
7b60: 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
7b70: 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72    /// Compact Fr
7b80: 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20  amework...      
7b90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
7ba0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
7bb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
7bc0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
7bd0: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
7be0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
7bf0: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
7c00: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
7c10: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
7c20: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
7c30: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
7c40: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
7c50: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
7c60: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
7c70: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7c80: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
7c90: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
7ca0: 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
7cb0: 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
7cc0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7cd0: 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  eName, /* in */.
7ce0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
7cf0: 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69  g name,     /* i
7d00: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
7d10: 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c  string @default,
7d20: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
7d30: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
7d40: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
7d50: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
7d60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7d70: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
7d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7d90: 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d  if ((fileName ==
7da0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20   null) || (name 
7db0: 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7dd0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
7de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
7df0: 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d  mlDocument docum
7e00: 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63  ent = new XmlDoc
7e10: 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ument();....    
7e20: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
7e30: 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65  nt.Load(fileName
7e40: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
7e50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7e60: 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  XmlElement eleme
7e70: 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65  nt = document.Se
7e80: 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d  lectSingleNode(.
7e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7ea0: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
7eb0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
7ec0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
7ed0: 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
7ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7ef0: 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61  /configuration/a
7f00: 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40  ppSettings/add[@
7f10: 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d  key='{0}']", nam
7f20: 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20  e)) as..        
7f30: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
7f40: 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ment; /* throw *
7f50: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7f60: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21     if (element !
7f70: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
7f80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
7fa0: 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b  ng value = null;
7fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7fc0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
7fd0: 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22  t.HasAttribute("
7fe0: 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20  value"))..      
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8000: 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e  value = element.
8010: 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61  GetAttribute("va
8020: 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lue");....      
8030: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8040: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
8050: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
8080: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8090: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
80a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
80b0: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
80c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80d0: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
80e0: 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72  ment.ExpandEnvir
80f0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28  onmentVariables(
8100: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8120: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
8130: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
8140: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
8150: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
8180: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
8190: 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20  okens(fileName, 
81a0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
81b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81d0: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
81e0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8200: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
8210: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8220: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
8230: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
8240: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
8250: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
8260: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
8270: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
8280: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
8290: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
82a0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
82b0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
82c0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
82d0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
82f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8300: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
8310: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
8320: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8340: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
8350: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
8360: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
8370: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
8380: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
8390: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
83a0: 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b   get setting \"{
83b0: 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a  0}\" value " +..
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83d0: 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20        "from XML 
83e0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
83f0: 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22  le \"{1}\": {2}"
8400: 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  , name,..       
8410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8420: 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ileName, e)); /*
8430: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
8440: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8450: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
8460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
8470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8480: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
8490: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
84a0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
84b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
84c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
84d0: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  fault;..      }.
84e0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
84f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8530: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
8540: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8550: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
8560: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8570: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
8580: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
8590: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
85a0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
85b0: 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f  that is..      /
85c0: 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
85d0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
85e0: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
85f0: 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  y, if applicable
8600: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
8610: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8620: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8630: 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20  assembly">..    
8640: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
8650: 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65  d assembly to re
8660: 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66 72  ad the target fr
8670: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
8680: 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  e value..      /
8690: 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  // from...      
86a0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
86b0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
86c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
86d0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61   value of the ta
86e0: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
86f0: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 66  ttribute value f
8700: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
8710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61  ..      /// mana
8720: 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52  ged assembly -OR
8730: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
8740: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
8750: 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20  d.  If this..   
8760: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
8770: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
8780: 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  h a version of t
8790: 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
87a0: 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  k prior to..    
87b0: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e    /// version 4.
87c0: 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  0, the value ret
87d0: 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63  urned MAY reflec
87e0: 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f  t that version o
87f0: 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  f the .NET..    
8800: 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20    /// Framework 
8810: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f  instead of the o
8820: 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ne associated wi
8830: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
8840: 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20   managed..      
8850: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  /// assembly... 
8860: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
8870: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
8880: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
8890: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
88a0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
88b0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
88c0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
88d0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
88e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
88f0: 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
8900: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
8910: 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54  if NET_40 || NET
8920: 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c  _45 || NET_451 |
8930: 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54  | NET_452 || NET
8940: 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c  _46 || NET_461 |
8950: 7c 20 4e 45 54 5f 34 36 32 0d 0a 20 20 20 20 20  | NET_462..     
8960: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
8970: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8990: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
89a0: 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
89d0: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
89e0: 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
89f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8a10: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
8a20: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
8a30: 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  te targetFramewo
8a40: 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  rk =..          
8a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a60: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
8a70: 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20  Attribute)..    
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a90: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47        assembly.G
8aa0: 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74  etCustomAttribut
8ab0: 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ad0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
8ae0: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
8af0: 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d  te), false)[0];.
8b00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8b10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8b20: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e  targetFramework.
8b30: 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a  FrameworkName;..
8b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8b60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
8b70: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
8b80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8ba0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
8bb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
8bc0: 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20  elif NET_35..   
8bd0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8be0: 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
8bf0: 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d  ,Version=v3.5";.
8c00: 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20  .#elif NET_20.. 
8c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
8c20: 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f  urn ".NETFramewo
8c30: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22  rk,Version=v2.0"
8c40: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8c50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8c60: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
8c70: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
8c80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8ce0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
8cf0: 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61  ccepts a long ta
8d00: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
8d10: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61  ttribute value a
8d20: 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f  nd makes it into
8d30: 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75   a..      /// mu
8d40: 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69  ch shorter versi
8d50: 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72  on, suitable for
8d60: 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20   use with NuGet 
8d70: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20  packages...     
8d80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8d90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
8da0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
8db0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c  .      /// The l
8dc0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
8dd0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
8de0: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
8df0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
8e00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
8e10: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
8e20: 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74   /// The short t
8e30: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
8e40: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
8e50: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
8e60: 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  cannot..      //
8e70: 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  / be determined 
8e80: 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20  or converted... 
8e90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
8ea0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
8eb0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
8ec0: 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
8ed0: 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
8ee0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
8ef0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
8f00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
8f10: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
8f20: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
8f30: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
8f40: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
8f50: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
8f60: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
8f70: 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65  place(".NETFrame
8f80: 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
8f90: 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20   "net");..      
8fa0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
8fb0: 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53  e.Replace(".", S
8fc0: 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d  tring.Empty);...
8fd0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8fe0: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
8ff0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
9000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9040: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
9050: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9060: 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73     /// If necess
9070: 61 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c  ary, replaces al
9080: 6c 20 73 75 70 70 6f 72 74 65 64 20 65 6e 76 69  l supported envi
9090: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
90a0: 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f   tokens..      /
90b0: 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73  // with their as
90c0: 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e  sociated values.
90d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
90e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
90f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
9100: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  alue">..      //
9110: 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61 6c 75  / A setting valu
9120: 65 20 72 65 61 64 20 66 72 6f 6d 20 61 6e 20 65  e read from an e
9130: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
9140: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ble...      /// 
9150: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
9160: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
9170: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
9180: 75 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d  ue of the <param
9190: 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ref name="value"
91a0: 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70   /> will all sup
91b0: 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f  ported..      //
91c0: 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  / environment va
91d0: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65  riable tokens re
91e0: 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75  placed.  No retu
91f0: 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73 65  rn value is rese
9200: 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rved..      /// 
9210: 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65  to indicate an e
9220: 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68  rror.  This meth
9230: 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d  od cannot fail..
9240: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
9250: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
9260: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
9270: 6e 67 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f  ng ReplaceEnviro
9280: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b  nmentVariableTok
9290: 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ens(..          
92a0: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
92b0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
92c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
92d0: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
92e0: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
92f0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
9300: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9310: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47  ng directory = G
9320: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
9330: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
9340: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
9350: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
9360: 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20  y(directory)).. 
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9390: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
93a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93c0: 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e    value = value.
93d0: 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20  Replace(..      
93e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93f0: 20 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72 65      AssemblyDire
9400: 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65  ctoryToken, dire
9410: 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  ctory);..       
9420: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
9430: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
9440: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
9450: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
9460: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
9470: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
9480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9490: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
94a0: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
94b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94c0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
94d0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
94e0: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
94f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
9500: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
9510: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9530: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
9540: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
9550: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
9560: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9580: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
9590: 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61  rentCulture, "Na
95a0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b  tive library " +
95b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95d0: 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
95e0: 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61 73  ed to replace as
95f0: 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20 20  sembly " +..    
9600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9610: 20 20 20 20 20 20 20 20 20 20 22 64 69 72 65 63            "direc
9620: 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22  tory token: {0}"
9630: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
9640: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
9650: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9670: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9690: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
96b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96d0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
9700: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
9710: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
9720: 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  embly = null;...
9730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
9740: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
9750: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9760: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20         assembly 
9770: 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78  = Assembly.GetEx
9780: 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28  ecutingAssembly(
9790: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
97a0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
97b0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
97c0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
97d0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
97e0: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
97f0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
9800: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
9810: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
9820: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
9830: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
9840: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
9850: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
9860: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
9870: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9890: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
98a0: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
98b0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
98c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
98e0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
98f0: 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
9900: 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9920: 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
9930: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62 74  er failed to obt
9940: 61 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22 20  ain executing " 
9950: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 73               "as
9970: 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29  sembly: {0}", e)
9980: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
99b0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
99e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
99f0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
9a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
9a10: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9a20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9a30: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 61         string ta
9a40: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 20  rgetFramework = 
9a50: 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65 74  AbbreviateTarget
9a60: 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20  Framework(..    
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
9a80: 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46  tAssemblyTargetF
9a90: 72 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62 6c  ramework(assembl
9aa0: 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
9ab0: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
9ac0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
9ad0: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29  targetFramework)
9ae0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9af0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9b00: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
9b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b30: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
9b40: 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20  lue.Replace(..  
9b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b60: 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46 72          TargetFr
9b70: 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61  ameworkToken, ta
9b80: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b 0d  rgetFramework);.
9b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ba0: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
9bb0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
9bc0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
9bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
9be0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
9bf0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
9c00: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
9c10: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
9c20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9c30: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
9c40: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
9c50: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c70: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
9cb0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
9cc0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
9cd0: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cf0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
9d00: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
9d10: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
9d20: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
9d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d40: 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
9d50: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
9d60: 70 6c 61 63 65 20 74 61 72 67 65 74 20 22 20 2b  place target " +
9d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d90: 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e  "framework token
9da0: 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
9db0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9dd0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
9de0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
9df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e00: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e20: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
9e30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9e40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
9e50: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
9e60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9e70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9e80: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9e90: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
9ea0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
9eb0: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
9f10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9f20: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
9f30: 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c   returns the val
9f40: 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ue of the specif
9f50: 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69  ied setting, usi
9f60: 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20  ng the XML..    
9f70: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
9f80: 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20  ion file and/or 
9f90: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
9fa0: 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74 68  variables for th
9fb0: 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20  e current..     
9fc0: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e 64   /// process and
9fd0: 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  /or the current 
9fe0: 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76 61  system, when ava
9ff0: 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  ilable...      /
a000: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a010: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
a020: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
a030: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
a040: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
a050: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a060: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
a070: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
a080: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
a090: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
a0a0: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
a0b0: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
a0c0: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
a0d0: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
a0e0: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
a0f0: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
a100: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a110: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
a120: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
a130: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
a140: 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20  etting -OR- the 
a150: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70  default value sp
a160: 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20  ecified by..    
a170: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
a180: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
a190: 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20  > if it has not 
a1a0: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
a1b0: 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  tly or..      //
a1c0: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
a1d0: 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66 61  rmined.  By defa
a1e0: 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e  ult, all referen
a1f0: 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67 0d  ces to existing.
a200: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72  .      /// envir
a210: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
a220: 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64 65   will be expande
a230: 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72 65  d to their corre
a240: 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d  sponding values.
a250: 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69  .      /// withi
a260: 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 62  n the value to b
a270: 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65 73  e returned unles
a280: 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e 6f  s either the "No
a290: 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20  _Expand" or..   
a2a0: 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e     /// "No_Expan
a2b0: 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  d_<paramref name
a2c0: 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69  ="name" />" envi
a2d0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
a2e0: 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20   is set [to..   
a2f0: 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d     /// anything]
a300: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
a310: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
a320: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
a330: 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67  tring GetSetting
a340: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
a350: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20    string name,  
a360: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
a370: 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65        string @de
a380: 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  fault /* in */..
a390: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
a3a0: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
a3b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a3c0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
a3d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
a3e0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
a3f0: 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65  ecial "No_SQLite
a400: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22  GetSettingValue"
a410: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
a420: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a430: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
a440: 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
a450: 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
a460: 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20   always..       
a470: 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75     //       retu
a480: 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  rn the default v
a490: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  alue...         
a4a0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
a4b0: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
a4c0: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
a4d0: 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  iable(..        
a4e0: 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69          "No_SQLi
a4f0: 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  teGetSettingValu
a500: 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  e") != null)..  
a510: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a520: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a530: 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20  @default;..     
a540: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
a550: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
a560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5a0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  /....          i
a5b0: 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
a5c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a5d0: 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
a5e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
a5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
a640: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
a650: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
a660: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
a670: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
a680: 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62   NOTE: We are ab
a690: 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65  out to read a se
a6a0: 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d  tting value from
a6b0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
a6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
a6d0: 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c 79       or possibly
a6e0: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f   from the XML co
a6f0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
a700: 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20 20  ; create or..   
a710: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a720: 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70  increment the ap
a730: 70 72 6f 70 72 69 61 74 65 20 73 74 61 74 69 73  propriate statis
a740: 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  tic now...      
a750: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a760: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
a770: 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64  ementSettingRead
a780: 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73  Count(name, fals
a790: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
a7a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
a7b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
a7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a800: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a810: 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20    bool expand = 
a820: 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a  true; /* SHARED:
a830: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e   Environment -AN
a840: 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69  D- XML config fi
a850: 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  le. */....      
a860: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
a870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
a8b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a8c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a8d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
a8e0: 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  lue = null;.... 
a8f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
a900: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
a910: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
a920: 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20  "No_Expand") != 
a930: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
a940: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a950: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
a960: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
a970: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
a980: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
a990: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
a9a0: 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  iable(..        
a9b0: 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
a9c0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
a9d0: 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
a9e0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
a9f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
aa00: 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64        "No_Expand
aa10: 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d  _{0}", name)) !=
aa20: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
aa30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
aa40: 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73     expand = fals
aa50: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
aa60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c  ...          val
aa70: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
aa80: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
aa90: 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a  ariable(name);..
aaa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
aab0: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
aac0: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
aad0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
aae0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
aaf0: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
ab00: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
ab10: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70   Environment.Exp
ab20: 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  andEnvironmentVa
ab30: 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d  riables(value);.
ab40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ab50: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
ab60: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
ab70: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
ab80: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
ab90: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
aba0: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
abc0: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  turn value;.... 
abd0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
abe0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
abf0: 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74  If the "No_SQLit
ac00: 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20  eXmlConfigFile" 
ac10: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
ac20: 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20 20  able is..       
ac30: 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74 20     //       set 
ac40: 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74  [to anything], t
ac50: 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  his method will 
ac60: 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d 20  NEVER read from 
ac70: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
ac80: 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66  /       XML conf
ac90: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
aca0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
acb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
acc0: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
acd0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
ace0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
acf0: 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43    "No_SQLiteXmlC
ad00: 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20 6e  onfigFile") != n
ad10: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ad20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ad30: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
ad40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
ad50: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
ad60: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
adb0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
adc0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
add0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
ade0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
adf0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
ae00: 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61  are about to rea
ae10: 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75  d a setting valu
ae20: 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a  e from the XML..
ae30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
ae40: 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
ae50: 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72   file; create or
ae60: 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61   increment the a
ae70: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
ae80: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
ae90: 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20  tatistic now... 
aea0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
aeb0: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
aec0: 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e  .IncrementSettin
aed0: 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c  gReadCount(name,
aee0: 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d   true);..#endif.
aef0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
af00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
af10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
af20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
af60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
af70: 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58  SettingValueViaX
af80: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20  mlConfigFile(.. 
af90: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
afa0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
afb0: 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61  e(), name, @defa
afc0: 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20  ult, expand);.. 
afd0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
afe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
b030: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b040: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b050: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b060: 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53  c string ListToS
b070: 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69  tring(IList<stri
b080: 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20  ng> list)..     
b090: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
b0a0: 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d   (list == null).
b0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
b0c0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
b0d0: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42           StringB
b0e0: 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20  uilder result = 
b0f0: 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
b100: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
b110: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
b120: 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73  g element in lis
b130: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
b140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
b150: 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75  f (element == nu
b160: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
b170: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
b180: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b190: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
b1a0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
b1c0: 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d  lt.Append(' ');.
b1d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b1e0: 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65   result.Append(e
b1f0: 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  lement);..      
b200: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b210: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
b220: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
b230: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
b240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b280: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b290: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b2a0: 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63   int CheckForArc
b2b0: 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
b2c0: 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20  tforms(..       
b2d0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
b2e0: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
b2f0: 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ref List<string>
b300: 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20   matches..      
b310: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
b320: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65            int re
b330: 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  sult = 0;....   
b340: 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68         if (match
b350: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
b360: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
b370: 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  es = new List<st
b380: 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ring>();....    
b390: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
b3a0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
b3b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b3c0: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
b3d0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
b3e0: 79 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d  y(directory) &&.
b3f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b400: 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63     (processorArc
b410: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
b420: 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  ms != null))..  
b430: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b450: 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c   foreach (KeyVal
b460: 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73  uePair<string, s
b470: 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20  tring> pair..   
b480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b490: 20 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63           in proc
b4a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
b4b0: 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20  ePlatforms)..   
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
b4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b4e0: 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65          if (Dire
b4f0: 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79  ctory.Exists(May
b500: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
b510: 72 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65  rectory, pair.Ke
b520: 79 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y)))..          
b530: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b550: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
b560: 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d  .Add(pair.Key);.
b570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b580: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
b590: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
b5a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
b5b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b5c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
b5d0: 6c 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65  lue = pair.Value
b5e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b5f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
b600: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
b610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b620: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
b630: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
b640: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b650: 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73  Directory.Exists
b660: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
b670: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c  h(directory, val
b680: 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ue)))..         
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
b6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6b0: 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
b6c0: 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20  s.Add(value);.. 
b6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6e0: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
b6f0: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
b700: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b730: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
b740: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
b750: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
b760: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b7c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
b7d0: 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c  ool CheckAssembl
b7e0: 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20  yCodeBase(..    
b7f0: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
b800: 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20  ssembly,..      
b810: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66      ref string f
b820: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
b830: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
b840: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b850: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b860: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
b870: 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
b880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b890: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
b8a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b8b0: 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65   string codeBase
b8c0: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65   = assembly.Code
b8d0: 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Base;....       
b8e0: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
b8f0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
b900: 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20  codeBase))..    
b910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b920: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69               Uri
b940: 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63   uri = new Uri(c
b950: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
b960: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b970: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20  localFileName = 
b980: 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a  uri.LocalPath;..
b990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b9a0: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
b9b0: 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29  (localFileName))
b9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b9d0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b9e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b9f0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
ba00: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
ba10: 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20  rectoryName(..  
ba20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba30: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20  localFileName); 
ba40: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
ba50: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
ba60: 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  ing xmlConfigFil
ba70: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
ba80: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
ba90: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
baa0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
bab0: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
bac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bad0: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c  (File.Exists(xml
bae0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
baf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb00: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
bb10: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
bb20: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
bb40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
bb70: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
bb80: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
bb90: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
bbc0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
bbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bbe0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
bbf0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
bc00: 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20  oader found XML 
bc10: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
bc20: 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
bc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc40: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
bc50: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
bc60: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
bc70: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc90: 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69          xmlConfi
bca0: 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20  gFileName)); /* 
bcb0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
bcf0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
bd20: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bd30: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
bd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd50: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c      fileName = l
bd60: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  ocalFileName;.. 
bd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd80: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bdb0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
bdc0: 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ches = null;....
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
bde0: 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74   (CheckForArchit
bdf0: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
be00: 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72  rms(directory, r
be10: 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29  ef matches) > 0)
be20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be30: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
be40: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
be50: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
be60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
be70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
be90: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
bea0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
beb0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
bec0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
bed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bee0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
bef0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
bf00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf10: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
bf20: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
bf30: 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69  oader found nati
bf40: 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ve sub-directori
bf50: 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  es " +..        
bf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf70: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
bf80: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
bf90: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
bfa0: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74          ListToSt
bfd0: 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b  ring(matches)));
bfe0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
c010: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
c020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c040: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
c050: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
c060: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
c070: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
c080: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
c090: 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65   = localFileName
c0a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c0b0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
c0c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c0d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c0e0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
c0f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
c100: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
c110: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
c120: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
c130: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
c140: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
c150: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
c160: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
c170: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
c180: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
c190: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
c1a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c1b0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
c1c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c1d0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
c1e0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
c1f0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
c200: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
c210: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
c220: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
c230: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
c240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
c250: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
c260: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
c270: 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61  to check code ba
c280: 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  se " +..        
c290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
c2a0: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
c2b0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
c2c0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
c2d0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
c2e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
c2f0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c320: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
c330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c340: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
c350: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c360: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
c370: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
c380: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
c390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3d0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
c3e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c3f0: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
c400: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 69  d returns the di
c410: 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
c420: 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
c430: 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  ly being..      
c440: 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20  /// executed... 
c450: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c460: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
c470: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
c480: 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
c490: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
c4a0: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
c4b0: 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
c4c0: 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
c4d0: 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
c4e0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
c4f0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
c500: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
c510: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
c520: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
c530: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
c540: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
c550: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c560: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
c570: 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41  bly assembly = A
c580: 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
c590: 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
c5a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c5b0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
c5c0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
c5d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c5e0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
c5f0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
c600: 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
c610: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
c620: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c640: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73  AssemblyName ass
c650: 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65  emblyName = asse
c660: 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d  mbly.GetName();.
c670: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c680: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d   if (assemblyNam
c690: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c6b0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
c6c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
c6d0: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e  Name = assemblyN
c6e0: 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23  ame.CodeBase;..#
c6f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
c700: 20 20 20 20 69 66 20 28 21 43 68 65 63 6b 41 73      if (!CheckAs
c710: 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61  semblyCodeBase(a
c720: 73 73 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c  ssembly, ref fil
c730: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
c740: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
c750: 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c  ame = assembly.L
c760: 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  ocation;..#endif
c770: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c780: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
c790: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
c7a0: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
c7b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c7c0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
c7d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
c7e0: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
c7f0: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
c800: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
c810: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c820: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
c830: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
c840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c850: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
c860: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c870: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
c880: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ry;..          }
c890: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
c8a0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
c8b0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
c8c0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
c8d0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
c8e0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
c8f0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
c900: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
c910: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
c920: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
c930: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
c940: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
c950: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c960: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
c970: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
c980: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
c990: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
c9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
c9b0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
c9c0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9e0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
c9f0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
ca00: 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f  d to get directo
ca10: 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ry " +..        
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
ca30: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
ca40: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
ca50: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
ca60: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
ca70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ca80: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cab0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
cac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cad0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
cae0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
caf0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
cb00: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
cb10: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
cb20: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
cb70: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
cb80: 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20  Optional Native 
cb90: 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50  SQLite Library P
cba0: 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d  re-Loading Code.
cbb0: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
cbc0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
cbd0: 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  are looking for 
cbe0: 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
cbf0: 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65  ite DLL ("sqlite
cc00: 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20  3.dll"),..      
cc10: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74  //       the int
cc20: 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74  erop DLL ("SQLit
cc30: 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c  e.Interop.dll"),
cc40: 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69   or we are runni
cc50: 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng on the..     
cc60: 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43   //       .NET C
cc70: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
cc80: 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c  , we should incl
cc90: 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f  ude this code (o
cca0: 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20  nly if the..    
ccb0: 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75    //       featu
ccc0: 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20  re has actually 
ccd0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20  been enabled).  
cce0: 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20  This code would 
ccf0: 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20  be totally..    
cd00: 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e    //       redun
cd10: 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64  dant if this mod
cd20: 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e  ule has been bun
cd30: 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69  dled into the mi
cd40: 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20  xed-mode..      
cd50: 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c  //       assembl
cd60: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  y...      //..#i
cd70: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
cd80: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
cd90: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
cda0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cdb0: 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  K....      //.. 
cdc0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e       // NOTE: On
cdd0: 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68  ly compile in th
cde0: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
cdf0: 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69   pre-load code i
ce00: 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20  f the feature.. 
ce10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
ce20: 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66  s been enabled f
ce30: 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a  or this build...
ce40: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52        //..#if PR
ce50: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
ce60: 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  RARY..      /// 
ce70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ce80: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
ce90: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
cea0: 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69   variable contai
ceb0: 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ning the process
cec0: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
ced0: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
cee0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
cef0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
cf00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cf10: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
cf20: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50  eadonly string P
cf30: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
cf40: 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20  CTURE =..       
cf50: 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52     "PROCESSOR_AR
cf60: 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a  CHITECTURE";....
cf70: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
cf80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
cfc0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
cfd0: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
cfe0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cff0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
d000: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
d010: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
d020: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
d030: 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e  library or null.
d040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
d050: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
d060: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
d070: 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69  ring _SQLiteNati
d080: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
d090: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
d0a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
d0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
d0f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
d110: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
d120: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
d130: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
d140: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
d150: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
d160: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
d170: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d180: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
d190: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
d1a0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
d1b0: 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndle = IntPtr.Ze
d1c0: 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  ro;..      #endr
d1d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
d1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d220: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
d230: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d240: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
d250: 6e 65 73 20 74 68 65 20 62 61 73 65 20 66 69 6c  nes the base fil
d260: 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20  e name (without 
d270: 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e  any directory in
d280: 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20  formation)..    
d290: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61    /// for the na
d2a0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
d2b0: 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
d2c0: 61 64 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  aded by this cla
d2d0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
d2e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
d2f0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
d300: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
d310: 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
d320: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
d330: 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65  te library to be
d340: 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a   pre-loaded by..
d350: 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63        /// this c
d360: 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  lass -OR- null i
d370: 66 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e  f its value cann
d380: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
d390: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
d3a0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
d3b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
d3c0: 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c  tring GetNativeL
d3d0: 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
d3e0: 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ly()..      {.. 
d3f0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
d400: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
d410: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
d420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
d430: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69  PreLoadSQLite_Li
d440: 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
d450: 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  y", null);....  
d460: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
d470: 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c  NameOnly != null
d480: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d490: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
d4a0: 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Only;....       
d4b0: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45     return SQLITE
d4c0: 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20  _DLL; /* COMPAT 
d4d0: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  */..      }.... 
d4e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d530: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
d540: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ry>..      /// S
d550: 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20  earches for the 
d560: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
d570: 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69 72  brary in the dir
d580: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
d590: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  g..      /// the
d5a0: 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
d5b0: 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
d5c0: 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68  ed as well as th
d5d0: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
d5e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ..      /// for 
d5f0: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
d600: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
d610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d630: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
d640: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
d650: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
d660: 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
d670: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
d680: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
d690: 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  to the base..   
d6a0: 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
d6b0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
d6c0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
d6d0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
d6e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d6f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d700: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
d710: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
d720: 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
d730: 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
d740: 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
d750: 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20  ied to refer to 
d760: 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  the name..      
d770: 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64  /// of the immed
d780: 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 28  iate directory (
d790: 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20  i.e. the offset 
d7a0: 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69  from the base di
d7b0: 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
d7c0: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
d7d0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
d7e0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
d7f0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
d800: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
d810: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
d820: 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29  n-zero (success)
d830: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
d840: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 61  QLite library wa
d850: 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69  s found; otherwi
d860: 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a  se,..      /// z
d870: 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a  ero (failure)...
d880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
d890: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
d8a0: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
d8b0: 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f  SearchForDirecto
d8c0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry(..          r
d8d0: 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44 69  ef string baseDi
d8e0: 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20  rectory,        
d8f0: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
d900: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
d910: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
d920: 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d  cture /* out */.
d930: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
d940: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d950: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
d960: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
d970: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
d980: 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f  QLite_NoSearchFo
d990: 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  rDirectory", nul
d9a0: 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
d9b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d9c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
d9d0: 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45  alse; /* DISABLE
d9e0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
d9f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
da00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
da10: 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20  NOTE: Determine 
da20: 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
da30: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
da40: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
da50: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
da60: 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73        If this is
da70: 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68   not known by th
da80: 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e  is class, we can
da90: 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20  not continue... 
daa0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
dab0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
dac0: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
dad0: 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
dae0: 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a  eNameOnly();....
daf0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
db00: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75  leNameOnly == nu
db10: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
db20: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
db30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
db40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
db50: 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c  OTE: Build the l
db60: 69 73 74 20 6f 66 20 62 61 73 65 20 64 69 72 65  ist of base dire
db70: 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63  ctories and proc
db80: 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a  essor/platform..
db90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
dba0: 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65     names.  These
dbb0: 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75   lists will be u
dbc0: 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61  sed to help loca
dbd0: 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  te the native.. 
dbe0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
dbf0: 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69    SQLite core li
dc00: 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f  brary (or intero
dc10: 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70  p assembly) to p
dc20: 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20  re-load into..  
dc30: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
dc40: 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a   this process...
dc50: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dc60: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
dc70: 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b   directories = {
dc80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dc90: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
dca0: 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c  tory(),..#if !PL
dcb0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
dcc0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
dcd0: 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e         AppDomain
dce0: 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42  .CurrentDomain.B
dcf0: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23  aseDirectory,..#
dd00: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
dd10: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   };....         
dd20: 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72   string[] subDir
dd30: 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20  ectories = {..  
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50              GetP
dd50: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
dd60: 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74 66  ture(), GetPlatf
dd70: 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20  ormName(null).. 
dd80: 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20           };.... 
dd90: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
dda0: 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f   (string directo
ddb0: 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65  ry in directorie
ddc0: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  s)..          {.
ddd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
dde0: 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20  f (directory == 
ddf0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
de00: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
de10: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
de20: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
de30: 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72 79  ing subDirectory
de40: 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69   in subDirectori
de50: 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es)..           
de60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
de70: 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 44          if (subD
de80: 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
de90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dea0: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
deb0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
dec0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
ded0: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
dee0: 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
def0: 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20  CombinePath(..  
df00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df10: 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65      MaybeCombine
df20: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
df30: 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a  subDirectory),..
df40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df50: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e        fileNameOn
df60: 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
df70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df90: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
dfa0: 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65   SQLite DLL file
dfb0: 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20   exists, return 
dfc0: 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
dfd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
dfe0: 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65       Prior to re
dff0: 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65  turning, set the
e000: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
e010: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
e020: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
e030: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
e040: 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63  ecture to reflec
e050: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a  t the location..
e060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e070: 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65    //       where
e080: 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a   it was found...
e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e0b0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
e0c0: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
e0d0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
e0e0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
e0f0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
e100: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
e110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e120: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e140: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
e160: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
e170: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
e180: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
e1b0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
e1c0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1e0: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
e1f0: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
e200: 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66 69 6c  found native fil
e210: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e230: 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30 7d       "name \"{0}
e240: 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 69  \", returning di
e250: 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22 20  rectory \"{1}\" 
e260: 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  and " +..       
e270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e280: 20 20 20 20 20 20 20 22 73 75 62 2d 64 69 72 65         "sub-dire
e290: 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e  ctory \"{2}\"...
e2a0: 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69 72  ", fileName, dir
e2b0: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2d0: 20 20 20 20 20 20 20 73 75 62 44 69 72 65 63 74         subDirect
e2e0: 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ory)); /* throw 
e2f0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
e300: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e320: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
e330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e340: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e360: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e380: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
e390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3a0: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
e3b0: 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
e3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e3d0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
e3e0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
e3f0: 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  subDirectory;.. 
e400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e410: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
e420: 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20  ; /* FOUND */.. 
e430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e440: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
e450: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
e460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
e470: 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e  turn false; /* N
e480: 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20  OT FOUND */..   
e490: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
e4f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e500: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
e510: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
e520: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
e530: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70  f the current ap
e540: 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20  plication..     
e550: 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20   /// domain...  
e560: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e570: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
e580: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
e590: 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
e5a0: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75  ctory for the cu
e5b0: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
e5c0: 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75  n domain -OR- nu
e5d0: 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
e5e0: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
e5f0: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
e600: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
e610: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
e620: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
e630: 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d  BaseDirectory().
e640: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
e650: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e660: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
e670: 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e "PreLoadSQLite
e680: 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 20  _BaseDirectory" 
e690: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
e6a0: 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
e6b0: 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65 74 2c  //       is set,
e6c0: 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
e6d0: 20 66 6f 72 20 74 68 65 20 62 61 73 65 20 64 69   for the base di
e6e0: 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
e6f0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e700: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
e710: 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  ry = GetSettingV
e720: 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53 51 4c  alue("PreLoadSQL
e730: 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72  ite_BaseDirector
e740: 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y",..           
e750: 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20     null);....   
e760: 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63         if (direc
e770: 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tory != null).. 
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e790: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
e7a0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e7b0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e7c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e7d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
e7e0: 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
e7f0: 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65  adSQLite_UseAsse
e800: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 65  mblyDirectory" e
e810: 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20  nvironment..    
e820: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76        //       v
e830: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28  ariable is set (
e840: 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 74 68  to anything), th
e850: 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  en attempt to us
e860: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
e870: 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65 63 74   //       direct
e880: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ory containing t
e890: 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  he currently exe
e8a0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d  cuting assembly.
e8b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
e8c0: 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74 65 6d      (i.e. System
e8d0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e  .Data.SQLite) in
e8e0: 74 73 65 61 64 20 6f 66 20 74 68 65 20 61 70 70  tsead of the app
e8f0: 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  lication..      
e900: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d      //       dom
e910: 61 69 6e 20 62 61 73 65 20 64 69 72 65 63 74 6f  ain base directo
e920: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
e930: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
e940: 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
e950: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e960: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
e970: 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
e980: 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29  irectory", null)
e990: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
e9a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e9b0: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
e9c0: 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  = GetAssemblyDir
e9d0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
e9e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
e9f0: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
ea00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ea10: 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
ea20: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
ea30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ea40: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
ea50: 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
ea60: 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75  e, fallback on u
ea70: 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64 69  sing the base di
ea80: 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a  rectory of the..
ea90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
eaa0: 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69     current appli
eab0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a  cation domain...
eac0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ead0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41          return A
eae0: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
eaf0: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
eb00: 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  tory;..#else..  
eb10: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
eb20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
eb30: 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61  therwise, fallba
eb40: 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ck on using the 
eb50: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
eb60: 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ning..          
eb70: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 75 72  //       the cur
eb80: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
eb90: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
eba0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ebb0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73      return GetAs
ebc0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
ebd0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
ebe0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
ebf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
ec40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ec50: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
ec60: 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63  s if the dynamic
ec70: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
ec80: 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73  le name requires
ec90: 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20   a suffix..     
eca0: 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74   /// and adds it
ecb0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
ecc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ecd0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ece0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
ecf0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
ed00: 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
ed10: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
ed20: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74  rary file name t
ed30: 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20  o inspect...    
ed40: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
ed50: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
ed60: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
ed70: 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
ed80: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
ed90: 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69  e, possibly modi
eda0: 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20  fied to include 
edb0: 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  an..      /// ex
edc0: 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  tension...      
edd0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
ede0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
edf0: 61 74 69 63 20 73 74 72 69 6e 67 20 46 69 78 55  atic string FixU
ee00: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20  pDllFileName(.. 
ee10: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
ee20: 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a  fileName /* in *
ee30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
ee40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ee50: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
ee60: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
ee70: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
ee80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ee90: 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65      if (HelperMe
eea0: 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28  thods.IsWindows(
eeb0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
eec0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
eed0: 20 20 20 20 20 20 20 69 66 20 28 21 66 69 6c 65         if (!file
eee0: 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c  Name.EndsWith(Dl
eef0: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d  lFileExtension,.
ef00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef10: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
ef20: 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
ef30: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d  nalIgnoreCase)).
ef40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ef60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ef70: 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c  rn fileName + Dl
ef80: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d  lFileExtension;.
ef90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
efa0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
efb0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
efc0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
efd0: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
efe0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
eff0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
f040: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
f050: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
f060: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
f070: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
f080: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
f090: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
f0a0: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a    /// process...
f0b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f0c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f0d0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
f0e0: 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73   /// The process
f0f0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
f100: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
f110: 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c  rocess -OR- null
f120: 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f   if it..      //
f130: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
f140: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
f150: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
f160: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
f170: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 72  tic string GetPr
f180: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
f190: 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ure()..      {..
f1a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f1b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
f1c0: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
f1d0: 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72  SQLite_Processor
f1e0: 41 72 63 68 69 74 65 63 74 75 72 65 22 20 65 6e  Architecture" en
f1f0: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
f200: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61       //       va
f210: 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c 20 75  riable is set, u
f220: 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66  se it verbatim f
f230: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  or the current p
f240: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
f250: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72 63      //       arc
f260: 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20  hitecture...    
f270: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
f280: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
f290: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
f2a0: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
f2b0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
f2c0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
f2d0: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
f2e0: 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b  tecture", null);
f2f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
f300: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
f310: 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29  tecture != null)
f320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f330: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72  return processor
f340: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d  Architecture;...
f350: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
f360: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42           // BUGB
f370: 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c  UG: Will this al
f380: 77 61 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65  ways be reliable
f390: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ?..          //.
f3a0: 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65  .          proce
f3b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
f3c0: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
f3d0: 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41 52 43  ue(PROCESSOR_ARC
f3e0: 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29  HITECTURE, null)
f3f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
f450: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f460: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
f470: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
f480: 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b 20 66  // HACK: Check f
f490: 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c  or an "impossibl
f4a0: 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20 20 49  e" situation.  I
f4b0: 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69  f the pointer si
f4c0: 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ze..          //
f4d0: 20 20 20 20 20 20 20 69 73 20 33 32 2d 62 69 74         is 32-bit
f4e0: 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  s, the processor
f4f0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 63 61   architecture ca
f500: 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34 22 2e  nnot be "AMD64".
f510: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
f520: 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 61 73       In that cas
f530: 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f 73 74  e, we are almost
f540: 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74 74 69   certainly hitti
f550: 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68 65 0d  ng a bug in the.
f560: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f570: 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79      operating sy
f580: 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75  stem and/or Visu
f590: 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74 20 63  al Studio that c
f5a0: 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20  auses the..     
f5b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 52       //       PR
f5c0: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
f5d0: 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  TURE environment
f5e0: 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e   variable to con
f5f0: 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
f600: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 72 6f      //       wro
f610: 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65  ng value in some
f620: 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2e 20   circumstances. 
f630: 20 50 6c 65 61 73 65 20 72 65 66 65 72 20 74 6f   Please refer to
f640: 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20 20 20   ticket..       
f650: 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39 61 63     //       [9ac
f660: 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66 75 72  9862611] for fur
f670: 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ther information
f680: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
f690: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28  .          if ((
f6a0: 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73  IntPtr.Size == s
f6b0: 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a  izeof(int)) &&..
f6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
f6d0: 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f 63  ring.Equals(proc
f6e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
f6f0: 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20  e, "AMD64",..   
f700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
f710: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
f720: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
f730: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
f740: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
f750: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
f760: 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
f770: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f780: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
f790: 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20  E: When tracing 
f7a0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65  is enabled, save
f7b0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20   the originally 
f7c0: 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20  detected..      
f7d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
f7e0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
f7f0: 74 65 63 74 75 72 65 20 62 65 66 6f 72 65 20 63  tecture before c
f800: 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20  hanging it...   
f810: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
f830: 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65 73 73  ing savedProcess
f840: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
f850: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
f860: 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d  ecture;..#endif.
f870: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f880: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
f890: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b     // NOTE: We k
f8a0: 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61 74 69  now that operati
f8b0: 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  ng systems that 
f8c0: 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61  return "AMD64" a
f8d0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
f8e0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 70 72   //       the pr
f8f0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
f900: 74 75 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c  ture are actuall
f910: 79 20 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d  y a superset of.
f920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
f930: 2f 20 20 20 20 20 20 20 74 68 65 20 22 78 38 36  /       the "x86
f940: 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  " processor arch
f950: 69 74 65 63 74 75 72 65 3b 20 74 68 65 72 65 66  itecture; theref
f960: 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20  ore, return..   
f970: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
f980: 20 20 20 20 22 78 38 36 22 20 77 68 65 6e 20 74      "x86" when t
f990: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20  he pointer size 
f9a0: 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20  is 32-bits...   
f9b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
f9d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
f9e0: 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23  re = "x86";....#
f9f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
fa00: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
fa10: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
fa20: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
fa30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
fa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fa60: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
fa70: 20 74 68 61 74 20 77 65 20 68 69 74 20 61 20 66   that we hit a f
fa80: 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69  airly unusual si
fa90: 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20  tuation (i.e... 
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fab0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 77   //       the "w
fac0: 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20  rong" processor 
fad0: 61 72 63 68 69 74 65 63 74 75 72 65 20 77 61 73  architecture was
fae0: 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20   detected)...   
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
fb00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
fb10: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
fb20: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
fb30: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
fb40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fb50: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
fb60: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
fb70: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
fb80: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
fb90: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
fba0: 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20 7b  oader detected {
fbb0: 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22  0}-bit pointer "
fbc0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
fbd0: 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65 20            "size 
fbe0: 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61  with processor a
fbf0: 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31  rchitecture \"{1
fc00: 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a  }\", using " +..
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc20: 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72        "processor
fc30: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
fc40: 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e  {2}\" instead...
fc50: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
fc60: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
fc70: 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74  .Size * 8 /* bit
fc80: 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65  s */, savedProce
fc90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
fca0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
fcb0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
fcc0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
fcd0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
fcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
fd00: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
fd10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fd20: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
fd30: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
fd40: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
fd50: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
fd60: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69  lse..          i
fd70: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
fd80: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
fd90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
fdb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fdc0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
fdd0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
fde0: 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20  mework, attempt 
fdf0: 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69 76  to use the nativ
fe00: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
fe10: 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20   //       Win32 
fe20: 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69  API function (vi
fe30: 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74  a P/Invoke) that
fe40: 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d   can provide us.
fe50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
fe60: 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68 65  /       with the
fe70: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
fe80: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
fe90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
fea0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
feb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fed0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
fee0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
fef0: 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74   The output of t
ff00: 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  he GetSystemInfo
ff10: 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62   function will b
ff20: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
ff30: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c       //       pl
ff40: 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79  aced here.  Only
ff50: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
ff60: 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c  rchitecture fiel
ff70: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
ff80: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
ff90: 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d 65   used by this me
ffa0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
ffb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
ffd0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
ffe0: 64 73 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49  dsWin32.SYSTEM_I
fff0: 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d  NFO systemInfo;.
10000 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10010 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
10020 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
10030 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79  TE: Query the sy
10040 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
10050 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74   via P/Invoke, t
10060 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  hus..           
10070 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
10080 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75  filling the stru
10090 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
100a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
100b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
100d0 6f 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74  odsWin32.GetSyst
100e0 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65  emInfo(out syste
100f0 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
10100 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
10110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10120 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75     // NOTE: Retu
10130 72 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  rn the processor
10140 20 61 72 63 68 69 74 65 63 74 75 72 65 20 76 61   architecture va
10150 6c 75 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e  lue as a string.
10160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10170 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10180 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
10190 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
101a0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
101b0 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 49           systemI
101c0 6e 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72  nfo.wProcessorAr
101d0 63 68 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72  chitecture.ToStr
101e0 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
101f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10200 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
10210 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10230 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
10240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
10250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10260 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10270 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f      // NOTE: Upo
10280 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72  n failure, retur
10290 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  n an empty strin
102a0 67 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72  g.  This will pr
102b0 65 76 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  event..         
102c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
102d0 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64  e calling method
102e0 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e   from considerin
102f0 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61  g this method ca
10300 6c 6c 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  ll a..          
10310 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61      //       "fa
10320 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20  ilure"...       
10330 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10340 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
10350 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
10360 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
10370 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
10380 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
10390 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
103a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
103e0 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
103f0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
10400 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
10410 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
10460 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10470 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69  y>..      /// Gi
10480 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ven the processo
10490 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
104a0 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65  returns the name
104b0 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d   of the platform
104c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
104d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
104e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
104f0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
10500 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
10510 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72  // The processor
10520 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
10530 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74   be translated t
10540 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  o a platform nam
10550 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
10560 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
10570 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
10580 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66     /// The platf
10590 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  orm name for the
105a0 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
105b0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
105c0 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20  e -OR- null..   
105d0 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e     /// if it can
105e0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
105f0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
10600 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
10610 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
10620 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72  tring GetPlatfor
10630 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  mName(..        
10640 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
10650 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 2f  orArchitecture /
10660 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
10670 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
10680 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
10690 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
106a0 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
106b0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
106c0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
106d0 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
106e0 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
106f0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
10700 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
10710 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72  mpty(processorAr
10720 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20  chitecture))..  
10730 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10740 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
10750 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
10760 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
10770 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10780 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
10790 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
107a0 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
107b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
107c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
107d0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
107e0 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74       string plat
107f0 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  formName;....   
10800 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
10810 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
10820 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72  turePlatforms.Tr
10830 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20  yGetValue(..    
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10850 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
10860 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61  tecture, out pla
10870 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20  tformName))..   
10880 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108a0 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e  return platformN
108b0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
108c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
108d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
108e0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
108f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
10950 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10960 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
10970 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  s to load the na
10980 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
10990 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ary based on the
109a0 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
109b0 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20    /// directory 
109c0 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  and processor ar
109d0 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20  chitecture...   
109e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
109f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
10a00 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69  ram name="baseDi
10a10 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20  rectory">..     
10a20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
10a30 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20  rectory to use, 
10a40 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74  null for default
10a50 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65 63   (the base direc
10a60 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f  tory of..      /
10a70 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  // the current a
10a80 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
10a90 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63 74  n).  This direct
10aa0 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61  ory should conta
10ab0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
10ac0 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
10ad0 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66 69  itecture specifi
10ae0 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  c sub-directorie
10af0 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
10b00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
10b10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
10b20 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
10b30 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
10b40 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20  / The requested 
10b50 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
10b60 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72  ecture, null for
10b70 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20   default (the.. 
10b80 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
10b90 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
10ba0 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
10bb0 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20 63  rocess).  This c
10bc0 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20  aller should..  
10bd0 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61      /// almost a
10be0 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e 75  lways specify nu
10bf0 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72 61  ll for this para
10c00 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  meter...      //
10c10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10c20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
10c30 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  e="nativeModuleF
10c40 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
10c50 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61   /// The candida
10c60 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  te native module
10c70 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f   file name to lo
10c80 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ad will be store
10c90 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f  d here,..      /
10ca0 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  // if necessary.
10cb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
10cc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
10cd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
10ce0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22  iveModuleHandle"
10cf0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10d00 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
10d10 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65  andle as returne
10d20 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79  d by LoadLibrary
10d30 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d   will be stored.
10d40 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c  .      /// here,
10d50 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
10d60 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
10d70 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69  be IntPtr.Zero i
10d80 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  f the call to.. 
10d90 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62       /// LoadLib
10da0 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20  rary fails...   
10db0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10dc0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
10dd0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
10de0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
10df0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61  native module wa
10e00 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73  s loaded success
10e10 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65  fully; otherwise
10e20 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
10e30 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
10e40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
10e50 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
10e60 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  ool PreLoadSQLit
10e70 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
10e80 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
10e90 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20  ctory,          
10ea0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
10eb0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
10ec0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
10ed0 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  re,    /* in */.
10ee0 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
10ef0 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75  tring nativeModu
10f00 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f  leFileName, /* o
10f10 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
10f20 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69   ref IntPtr nati
10f30 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20  veModuleHandle  
10f40 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
10f50 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
10f60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  {..          //.
10f70 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
10f80 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
10f90 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63 74  fied base direct
10fa0 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65  ory is null, use
10fb0 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20   the default..  
10fc0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
10fd0 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74   (i.e. attempt t
10fe0 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
10ff0 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20  detect it)...   
11000 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11010 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72       if (baseDir
11020 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
11030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62  .              b
11040 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47  aseDirectory = G
11050 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
11060 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11070 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
11080 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
11090 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
110a0 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c   base directory,
110b0 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
110c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
110d0 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65      if (baseDire
110e0 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
110f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11100 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
11110 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11120 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
11130 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61  Determine the ba
11140 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
11150 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
11160 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
11170 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11180 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b  If this is not k
11190 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61  nown by this cla
111a0 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f  ss, we cannot co
111b0 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20  ntinue...       
111c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
111d0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
111e0 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65  Only = GetNative
111f0 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
11200 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
11210 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
11220 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Only == null).. 
11230 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11240 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
11250 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11260 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
11270 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
11280 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69 73  ite library exis
11290 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20 64  ts in the base d
112a0 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
112b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73      //       its
112c0 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  elf, stop now...
112d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
112e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
112f0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
11300 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
11310 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65  CombinePath(base
11320 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  Directory,..    
11330 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
11340 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
11350 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
11360 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
11370 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11380 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
11390 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
113a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
113b0 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
113c0 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
113d0 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
113e0 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
113f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11400 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
11410 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
11420 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
11430 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
11440 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11450 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
11460 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
11470 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
11480 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
11490 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
114a0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
114b0 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
114c0 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
114d0 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
114e0 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
114f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11500 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
11510 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
11520 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
11530 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11540 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
11550 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
11560 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66  OTE: Build the f
11570 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c  ull path and fil
11580 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
11590 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
115a0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
115b0 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74   library using t
115c0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
115d0 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d  hitecture name..
115e0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
115f0 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
11600 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
11610 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
11620 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69  ePath(MaybeCombi
11630 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
11640 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
11650 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41  tory, processorA
11660 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 66 69  rchitecture), fi
11670 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
11680 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
11690 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
116a0 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61  : If the file na
116b0 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  me based on the 
116c0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
116d0 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20  ecture name..   
116e0 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74         // is not
116f0 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e   found, try usin
11700 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  g the associated
11710 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
11720 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
11730 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
11740 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
11750 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
11760 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11770 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11780 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
11790 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  mpt to translate
117a0 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
117b0 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 61  rchitecture to a
117c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
117d0 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72  //       platfor
117e0 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  m name...       
117f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11800 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
11810 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47  platformName = G
11820 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70  etPlatformName(p
11830 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
11840 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ture);....      
11850 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11860 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
11870 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
11880 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65  to translate the
11890 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20   platform name, 
118a0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
118b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
118c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
118d0 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e  latformName == n
118e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
118f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
11900 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
11910 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11920 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
11930 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
11940 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
11950 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
11960 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
11970 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
11980 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
11990 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  the platform nam
119a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
119b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
119c0 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
119d0 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
119e0 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
119f0 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
11a00 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
11a10 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
11a20 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ory, platformNam
11a30 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
11a40 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
11a50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11a60 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
11a70 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73  If the file does
11a80 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70   not exist, skip
11a90 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
11aa0 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
11ab0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11ac0 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
11ad0 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
11ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11af0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
11b00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
11b10 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
11b20 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
11b30 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
11b40 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
11b50 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
11b60 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
11b70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11b80 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ba0 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78  // NOTE: Show ex
11bb0 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61  actly where we a
11bc0 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  re trying to loa
11bd0 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  d the native..  
11be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11bf0 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20  //       SQLite 
11c00 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20  library from... 
11c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11c30 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
11c40 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
11c50 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
11c60 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
11c70 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11c80 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
11c90 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
11ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
11cb0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
11cc0 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e  -loader is tryin
11cd0 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  g to load native
11ce0 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
11d00 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
11d10 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d  }\"...", fileNam
11d20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
11d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11d40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
11d50 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
11d60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11d70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
11d80 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
11d90 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
11da0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
11db0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
11dc0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
11dd0 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74  ttempt to load t
11de0 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
11df0 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69  y.  This will ei
11e00 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ther..          
11e10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
11e20 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69  urn a valid nati
11e30 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
11e40 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e  , return IntPtr.
11e50 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Zero,..         
11e60 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
11e70 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74   throw an except
11e80 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74 20  ion.  This must 
11e90 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72 69  use the appropri
11ea0 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ate..           
11eb0 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e     //       P/In
11ec0 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72 20  voke method for 
11ed0 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72  the current oper
11ee0 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20  ating system... 
11ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
11f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
11f10 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
11f20 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d  ame = fileName;.
11f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
11f40 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
11f50 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61 72  e = NativeLibrar
11f60 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72  yHelper.LoadLibr
11f70 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
11f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f90 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f  return (nativeMo
11fa0 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e  duleHandle != In
11fb0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
11fc0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
11fd0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
11fe0 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
11ff0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
12000 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
12010 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
12020 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
12030 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
12040 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
12050 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12060 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
12070 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
120a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
120b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
120c0 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20 74  E: First, grab t
120d0 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72  he last Win32 er
120e0 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20  ror number...   
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12100 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12110 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72       int lastErr
12120 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74  or = Marshal.Get
12130 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29  LastWin32Error()
12140 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
12150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12160 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12170 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
12180 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65 20  : Show where we 
12190 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74  failed to load t
121a0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
121b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121c0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
121d0 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20  rary from along 
121e0 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20 65  with the Win32 e
121f0 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20  rror code and.. 
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70 74   //       except
12220 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  ion information.
12230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12240 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12250 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
12260 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
12270 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
12280 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
122a0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
122b0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122d0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
122e0 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
122f0 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
12300 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
12310 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
12320 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
12330 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f  }\" (getLastErro
12340 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
12350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12360 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
12370 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
12380 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
12390 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
123b0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
123c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
123d0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
123e0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
123f0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
12400 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12410 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12420 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  false;..      }.
12430 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
12440 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
12450 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
12460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124a0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
124b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
124c0 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20  EWORK..    //.. 
124d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74     // NOTE: On t
124e0 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
124f0 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e  Framework, the n
12500 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73  ative interop as
12510 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20  sembly must..   
12520 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73 65   //       be use
12530 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72 6f  d because it pro
12540 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f  vides several wo
12550 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45  rkarounds to .NE
12560 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f  T Compact..    /
12570 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72  /       Framewor
12580 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d  k limitations im
12590 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70  portant for prop
125a0 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  er operation of 
125b0 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  the core..    //
125c0 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
125d0 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ta.SQLite functi
125e0 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65  onality (e.g. be
125f0 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64  ing able to bind
12600 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70  ..    //       p
12610 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61  arameters and ha
12620 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ndle column valu
12630 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36  es of types Int6
12640 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a  4 and Double)...
12650 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
12660 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
12670 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
12680 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31  SQLite.Interop.1
12690 30 34 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20  04.dll";..#elif 
126a0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
126b0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
126c0 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
126d0 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   if the standard
126e0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
126f0 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20  is enabled, use 
12700 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  it...    //..   
12710 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
12720 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
12730 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a  L = "sqlite3";..
12740 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f  #elif USE_INTERO
12750 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20  P_DLL..    //.. 
12760 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
12770 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61  rwise, if the na
12780 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65  tive SQLite inte
12790 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20  rop assembly is 
127a0 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f  enabled,..    //
127b0 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a         use it...
127c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
127d0 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
127e0 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
127f0 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
12800 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ll";..#else..   
12810 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
12820 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d  : Finally, assum
12830 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65 64  e that the mixed
12840 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69  -mode assembly i
12850 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20  s being used... 
12860 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
12870 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
12880 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53   SQLITE_DLL = "S
12890 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
128a0 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d  e.dll";..#endif.
128b0 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73  ...    // This s
128c0 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65  ection uses inte
128d0 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61  rop calls that a
128e0 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c  lso fetch text l
128f0 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a  ength to optimiz
12900 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20  e conversion... 
12910 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67     // When using
12920 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c   the standard dl
12930 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63  l, we can replac
12940 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69  e these calls wi
12950 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65  th normal sqlite
12960 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20   calls and..    
12970 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65  // do unoptimize
12980 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e  d conversions in
12990 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64 73  stead afterwards
129a0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
129b0 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78 74  terop added text
129c0 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a  length calls....
129d0 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
129e0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
129f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12a00 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12a10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12a20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
12a30 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
12a40 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
12a50 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
12a60 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
12a70 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
12a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12a90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12aa0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12ab0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
12ac0 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f  n_database_name_
12ad0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
12ae0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
12af0 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
12b00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12b10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
12b20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12b30 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12b40 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
12b50 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69  atabase_name16_i
12b60 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
12b70 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
12b80 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
12b90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12ba0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
12bb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12bc0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12bd0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
12be0 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49  cltype_interop(I
12bf0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
12c00 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
12c10 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
12c20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12c30 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12c40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12c50 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
12c60 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
12c70 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
12c80 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
12c90 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
12ca0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12cb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
12cc0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12cd0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12ce0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
12cf0 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
12d00 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
12d10 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
12d20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
12d30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12d40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
12d50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
12d60 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
12d70 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  umn_name16_inter
12d80 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
12d90 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
12da0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
12db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12dc0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
12dd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12de0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
12df0 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
12e00 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
12e10 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
12e20 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
12e30 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
12e40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12e50 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
12e60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
12e70 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
12e80 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
12e90 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
12ea0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
12eb0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
12ec0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
12ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12ee0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12ef0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12f00 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
12f10 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74  n_table_name_int
12f20 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
12f30 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
12f40 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
12f50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12f60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
12f70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12f80 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12f90 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
12fa0 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
12fb0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
12fc0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
12fd0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
12fe0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ff0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
13000 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13010 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
13020 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74  _column_text_int
13030 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
13040 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
13050 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
13060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13070 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
13080 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13090 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
130a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
130b0 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
130c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
130d0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
130e0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
130f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13100 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13110 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13120 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
13130 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  g_interop(IntPtr
13140 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e   db, ref int len
13150 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
13160 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13170 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
13180 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13190 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
131a0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
131b0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
131c0 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
131d0 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e  t nBytes, ref In
131e0 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49  tPtr stmt, ref I
131f0 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c  ntPtr ptrRemain,
13200 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e   ref int nRemain
13210 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
13220 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13230 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
13240 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13250 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
13260 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
13270 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65  mn_metadata_inte
13280 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
13290 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
132a0 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
132b0 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
132c0 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
132d0 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
132e0 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
132f0 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
13300 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
13310 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
13320 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65 6e  c, ref int dtLen
13330 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e 29  , ref int csLen)
13340 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13350 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13360 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13370 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
13380 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
13390 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  e_text_interop(I
133a0 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74  ntPtr p, ref int
133b0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
133c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
133d0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
133e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
133f0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
13400 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e  _value_text16_in
13410 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
13420 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
13430 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13440 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
13450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13460 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
13470 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65  ite3_malloc_size
13480 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
13490 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  p);....#if INTER
134a0 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c  OP_LOG..    [Dll
134b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
134c0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
134d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
134e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
134f0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
13500 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23  og_interop();..#
13510 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f  endif..#endif../
13520 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
13530 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
13540 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
13550 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hese functions a
13560 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63  dd existing func
13570 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70  tionality on top
13580 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72   of SQLite and r
13590 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20  equire a little 
135a0 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f  effort to..    /
135b0 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68  / get working wh
135c0 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
135d0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62  ndard SQLite lib
135e0 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69  rary...    #regi
135f0 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64  on interop added
13600 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a   functionality..
13610 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
13620 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
13630 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13640 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
13650 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13660 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
13670 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a  _libversion();..
13680 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13690 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
136a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
136b0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
136c0 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65 69   interop_sourcei
136d0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  d();....    [Dll
136e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
136f0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
13700 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13710 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  int interop_comp
13720 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49  ileoption_used(I
13730 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b  ntPtr zOptName);
13740 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
13750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13760 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13770 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13780 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69  tr interop_compi
13790 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74  leoption_get(int
137a0 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c   N);....    [Dll
137b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
137c0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
137d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
137e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
137f0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e  sqlite3_close_in
13800 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
13810 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13820 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13830 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13840 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13850 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13860 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
13870 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74  tion_interop(Int
13880 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
13890 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
138a0 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
138b0 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
138c0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
138d0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
138e0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
138f0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
13900 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c  al, int needColl
13910 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  Seq);....    [Dl
13920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13930 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
13940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13950 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13960 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a   sqlite3_finaliz
13970 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
13980 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
13990 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
139a0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
139b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
139c0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
139d0 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
139e0 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70  p_finish_interop
139f0 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
13a00 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
13a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13a20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13a30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13a40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13a50 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69  te3_blob_close_i
13a60 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 6c  nterop(IntPtr bl
13a70 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ob);....    [Dll
13a80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13a90 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
13aa0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13ab0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13ac0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74  sqlite3_open_int
13ad0 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
13ae0 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d  Filename, byte[]
13af0 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65   vfsName, SQLite
13b00 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
13b10 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63  ags, int extFunc
13b20 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  s, ref IntPtr db
13b30 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
13b40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13b50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
13b60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13b70 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
13b80 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74  lite3_open16_int
13b90 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
13ba0 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d  Filename, byte[]
13bb0 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65   vfsName, SQLite
13bc0 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
13bd0 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63  ags, int extFunc
13be0 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  s, ref IntPtr db
13bf0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
13c00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13c10 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
13c20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13c30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
13c40 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65  lite3_reset_inte
13c50 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
13c60 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13c70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13c80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13c90 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
13ca0 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
13cb0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
13cc0 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  db);..#endif..//
13cd0 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
13ce0 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
13cf0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
13d00 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63  e standard api c
13d10 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20  all equivalents 
13d20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74  of the above int
13d30 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20  erop calls..    
13d40 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64  #region standard
13d50 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74   versions of int
13d60 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a  erop functions..
13d70 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
13d80 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c  NDARD....#if !PL
13d90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13da0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13db0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13dc0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13dd0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13de0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13df0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13e00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13e10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13e20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13e30 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13e40 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13e50 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64  3_close(IntPtr d
13e60 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45  b);....#if !INTE
13e70 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45  ROP_LEGACY_CLOSE
13e80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13e90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13ea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13eb0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13ec0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13ed0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13ee0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13ef0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13f00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13f10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13f20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13f30 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
13f40 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  de sqlite3_close
13f50 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20  _v2(IntPtr db); 
13f60 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23  /* 3.7.14+ */..#
13f70 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
13f80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13f90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13fa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13fb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13fc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13fd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13fe0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13ff0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14000 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14010 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14020 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14030 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14040 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
14050 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
14060 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
14070 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70   nArgs, int nTyp
14080 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
14090 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
140a0 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c   func, SQLiteCal
140b0 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c  lback fstep, SQL
140c0 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b  iteFinalCallback
140d0 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66   ffinal);....#if
140e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
140f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14100 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14110 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14120 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14130 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14140 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14150 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14160 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14170 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14180 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14190 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
141a0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49  lite3_finalize(I
141b0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
141c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
141d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
141e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
141f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14200 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14210 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14220 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14230 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14240 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14250 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14260 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14270 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14280 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
14290 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61  finish(IntPtr ba
142a0 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
142b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
142c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
142d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
142e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
142f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14300 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14310 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14330 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14370 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20  e3_reset(IntPtr 
14380 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
14390 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
143a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
143b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
143c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
143d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
143e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
143f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14410 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14420 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14430 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14440 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
14450 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
14460 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14470 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14480 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14490 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
144a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
144b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
144c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
144d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
144e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
144f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14500 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14510 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14520 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14530 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14540 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49  _database_name(I
14550 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14560 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
14570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
145a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
145b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
145c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
145d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
145e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
145f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14600 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14610 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
14620 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
14630 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
14640 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
14650 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
14660 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14670 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14680 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14690 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
146a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
146b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
146c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
146d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
146e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
146f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14700 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
14710 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
14720 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e  lumn_decltype(In
14730 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14740 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14750 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14760 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14770 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14780 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14790 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
147a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
147b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
147c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
147d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
147e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
147f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14800 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14810 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50  _decltype16(IntP
14820 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14830 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
14840 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14850 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14860 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14870 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14880 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14890 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
148a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
148b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
148c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
148d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
148e0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
148f0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
14900 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
14910 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
14920 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14930 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14950 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14960 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14970 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14980 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14990 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
149a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
149b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
149c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
149d0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
149e0 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
149f0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14a00 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14a10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14a20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14a30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14a40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14a50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14a60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14a70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14a90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14aa0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14ab0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14ac0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14ad0 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74  _origin_name(Int
14ae0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14af0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
14b00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14b10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14b20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14b30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14b40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14b50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14b60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14b70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14b80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14b90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14ba0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14bb0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
14bc0 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e  origin_name16(In
14bd0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14be0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14bf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14c00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14c10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14c20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14c30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14c40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14c50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14c60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14c70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14c80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14c90 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14ca0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14cb0 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50  _table_name(IntP
14cc0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14cd0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
14ce0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14cf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14d00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14d10 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14d20 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14d30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14d40 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14d50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14d60 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14d70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14d80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14d90 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
14da0 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  able_name16(IntP
14db0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14dc0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
14dd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14de0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14df0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14e00 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14e10 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14e20 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14e30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14e40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14e50 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14e60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14e70 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14e80 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
14e90 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
14ea0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
14eb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14ec0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14ed0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14ee0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14ef0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14f00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14f10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14f20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14f30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14f40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14f50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14f60 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
14f70 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e  column_text16(In
14f80 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14f90 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14fa0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14fb0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14fc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14fd0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14fe0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14ff0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15000 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15010 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15020 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15030 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15040 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
15050 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  r sqlite3_errmsg
15060 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
15070 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15080 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15090 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
150a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
150b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
150c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
150d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
150e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
150f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15100 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15110 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15120 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15130 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
15140 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
15150 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
15160 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
15170 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
15180 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a   ptrRemain);....
15190 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f  #if USE_PREPARE_
151a0 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  V2..#if !PLATFOR
151b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
151c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
151d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
151e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
151f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15200 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15210 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15220 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15230 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15240 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15250 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
15260 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
15270 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64  pare_v2(IntPtr d
15280 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
15290 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20  int nBytes, ref 
152a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66  IntPtr stmt, ref
152b0 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
152c0 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
152d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
152e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
152f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15300 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15310 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15320 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15330 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
15340 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15350 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
15360 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
15370 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15380 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15390 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
153a0 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e  lumn_metadata(In
153b0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
153c0 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
153d0 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
153e0 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
153f0 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
15400 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
15410 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
15420 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
15430 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
15440 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d  int autoInc);...
15450 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15460 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15470 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15480 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15490 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
154a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
154b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
154c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
154d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
154e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
154f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15500 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
15510 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50  _value_text(IntP
15520 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
15530 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15540 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15550 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15560 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15570 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15580 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15590 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
155a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
155b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
155c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
155d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
155e0 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
155f0 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29  text16(IntPtr p)
15600 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ;....#endif..   
15610 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44   // SQLITE_STAND
15620 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
15630 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
15640 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
15650 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68  are custom and h
15660 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ave no equivalen
15670 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  t standard libra
15680 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ry method...    
15690 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61  // All of them a
156a0 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65  re "nice to have
156b0 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73  s" and not neces
156c0 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20  sarily "need to 
156d0 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65  haves"...    #re
156e0 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65  gion no equivale
156f0 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68  nt standard meth
15700 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  od....#if !SQLIT
15710 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
15720 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15730 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15740 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15750 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15760 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
15770 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lseq_interop(Int
15780 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
15790 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20 69   int type, ref i
157a0 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20  nt enc, ref int 
157b0 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
157c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
157d0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
157e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
157f0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
15800 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65  text_collcompare
15810 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15820 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
15830 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62  p1, int p1len, b
15840 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32  yte[] p2, int p2
15850 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
15860 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15870 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
15880 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15890 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
158a0 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f   sqlite3_cursor_
158b0 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
158c0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63  tPtr stmt, int c
158d0 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20  ursor, ref long 
158e0 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowid);....    [
158f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15900 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
15910 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15920 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
15930 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  de sqlite3_index
15940 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74  _column_info_int
15950 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
15960 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20  byte[] catalog, 
15970 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65  byte[] IndexName
15980 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e  , byte[] ColumnN
15990 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f 72  ame, ref int sor
159a0 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74 20  tOrder, ref int 
159b0 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e 74  onError, ref Int
159c0 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72  Ptr Collation, r
159d0 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b  ef int colllen);
159e0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
159f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15a00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15a10 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
15a20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75  sqlite3_table_cu
15a30 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rsor_interop(Int
15a40 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62  Ptr stmt, int db
15a50 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50  , int tableRootP
15a60 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  age);....#endif.
15a70 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
15a80 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
15a90 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
15aa0 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61   Standard API ca
15ab0 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73  lls global acros
15ac0 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65  s versions.  The
15ad0 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73  re are a few ins
15ae0 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f  tances of intero
15af0 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20  p calls..    // 
15b00 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72  scattered in her
15b10 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20  e, but they are 
15b20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e  only active when
15b30 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
15b40 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65  TFRAMEWORK is de
15b50 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65  clared...    #re
15b60 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71  gion standard sq
15b70 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
15b80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15b90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15ba0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15bb0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15bc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15bd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15be0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15bf0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15c00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15c10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15c20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15c30 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
15c40 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  3_libversion();.
15c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15d00 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
15d10 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
15d20 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  r();....#if !PLA
15d30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15d40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15d50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15d60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15d70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15d80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15d90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15da0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15db0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15dc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15dd0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
15de0 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
15df0 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
15e00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15e10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15e20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15e30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15e40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15e50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15e60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15e70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15e80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15e90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15ea0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
15eb0 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
15ec0 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f  n_used(IntPtr zO
15ed0 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ptName);....#if 
15ee0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15ef0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15f10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15f20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15f40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15f50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15f60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15f70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15f80 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15f90 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  Ptr sqlite3_comp
15fa0 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
15fb0 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t N);....#if !PL
15fc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15fd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15fe0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15ff0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16000 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16010 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16020 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16030 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16040 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16050 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16060 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
16070 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
16080 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
16090 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20  cache(..        
160a0 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a  int enable);....
160b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
160c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
160d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
160e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
160f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
16100 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16110 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
16120 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16130 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
16140 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
16150 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16160 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16170 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f   sqlite3_enable_
16180 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d  load_extension(.
16190 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
161a0 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b  db, int enable);
161b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
161c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
161d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
161e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
161f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16200 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16210 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16220 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16230 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16240 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16250 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16260 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16270 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61  Code sqlite3_loa
16280 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
16290 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
162a0 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65   byte[] fileName
162b0 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d  , byte[] procNam
162c0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45  e, ref IntPtr pE
162d0 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rror);....#if !P
162e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
162f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16300 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16310 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16320 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16330 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16340 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16350 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16360 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16370 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16380 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16390 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
163a0 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63  e3_overload_func
163b0 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
163c0 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e  IntPtr zName, in
163d0 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66  t nArgs);....#if
163e0 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50   WINDOWS..#if !P
163f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16400 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16410 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16420 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16430 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16440 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16450 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
16460 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
16470 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16490 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
164a0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
164b0 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  ndif..    //..  
164c0 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22    // NOTE: The "
164d0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
164e0 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c  t_directory" SQL
164f0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
16500 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
16510 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
16520 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
16530 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dows...    //.. 
16540 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16550 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
16560 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
16570 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
16580 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
16590 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
165a0 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f  ...#if !DEBUG //
165b0 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65   NOTE: Should be
165c0 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20 21   "WIN32HEAP && !
165d0 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21  MEMDEBUG"..#if !
165e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
165f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16600 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16610 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16620 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16630 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16640 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16650 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16660 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16670 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
16680 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
16690 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
166a0 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65  eap" SQLite core
166b0 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
166c0 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
166d0 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
166e0 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65  d on Windows whe
166f0 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  n the Win32 nati
16700 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ve allocator is 
16710 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  in..    //      
16720 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65   use (i.e. by de
16730 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61  fault, in "Relea
16740 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  se" builds of Sy
16750 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
16760 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
16770 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c  nly).  By defaul
16780 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75  t, in "Debug" bu
16790 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
167a0 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d  ata.SQLite, the.
167b0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45  .    //       ME
167c0 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72  MDEBUG allocator
167d0 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   is used...    /
167e0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
167f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16800 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16810 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65  lite3_win32_rese
16820 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66  t_heap();....#if
16830 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16840 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16850 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16860 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16870 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16880 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16890 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
168a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
168b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
168c0 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
168d0 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
168e0 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
168f0 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  ct_heap" SQLite 
16900 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
16910 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
16920 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
16930 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
16940 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
16950 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
16960 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
16970 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
16980 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
16990 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
169a0 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
169b0 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
169c0 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
169d0 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
169e0 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
169f0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
16a00 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
16a10 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
16a20 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
16a30 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
16a40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16a50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16a60 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
16a70 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66  compact_heap(ref
16a80 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d   uint largest);.
16a90 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
16aa0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16ab0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16ac0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16ad0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16ae0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16af0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16b00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16b10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16b20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16b30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16b40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16b50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16b60 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29  e3_malloc(int n)
16b70 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16b80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16b90 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16ba0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16bb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16bc0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16bd0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16be0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16bf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16c00 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16c10 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16c20 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16c30 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
16c40 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
16c50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16c60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16c70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16c80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16c90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16ca0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16cb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16cc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16cd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16ce0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16cf0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16d00 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
16d10 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
16d20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16d30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16d40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16d50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16d60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16d70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16d80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16d90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16da0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16db0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16dc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16dd0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
16de0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
16df0 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
16e00 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ilename, ref Int
16e10 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
16e20 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
16e30 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  s, byte[] vfsNam
16e40 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
16e50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16e60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16e70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16e80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16e90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16ea0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
16eb0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
16ec0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
16ed0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16ee0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
16ef0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16f00 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
16f10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16f20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16f30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16f40 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72  lite3_open16(str
16f50 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65  ing fileName, re
16f60 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
16f70 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16f80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16f90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16fa0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16fb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16fc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16fd0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
16fe0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16ff0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17000 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17010 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17020 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69  n void sqlite3_i
17030 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72 20  nterrupt(IntPtr 
17040 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
17050 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17060 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17080 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17090 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
170a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
170b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
170c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
170d0 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  g sqlite3_last_i
170e0 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50  nsert_rowid(IntP
170f0 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  tr db);..#endif.
17100 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17110 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17120 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17130 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17150 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17160 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17170 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17190 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
171a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
171b0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
171c0 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64  changes(IntPtr d
171d0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
171e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
171f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17200 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17210 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17220 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17230 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17240 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17250 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
17260 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
17270 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  used();..#endif.
17280 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17290 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
172a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
172b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
172c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
172d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
172e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
172f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17300 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
17310 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
17320 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46  water(int resetF
17330 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lag);..#endif...
17340 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17350 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17360 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17370 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17380 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17390 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
173a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
173b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
173c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
173d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
173e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
173f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
17400 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  e sqlite3_shutdo
17410 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  wn();....#if !PL
17420 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17430 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
17440 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17450 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
17460 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17470 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17480 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17490 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
174a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
174b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
174c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
174d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
174e0 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49  3_busy_timeout(I
174f0 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73  ntPtr db, int ms
17500 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17550 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17560 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17570 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17580 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
175a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
175b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
175c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
175d0 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e  lear_bindings(In
175e0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
175f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17600 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17610 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17620 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17630 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17650 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17670 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17680 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17690 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
176a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
176b0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
176c0 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
176d0 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d  nt index, Byte[]
176e0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
176f0 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73  e, IntPtr nTrans
17700 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ient);....#if !P
17710 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17720 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17730 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17740 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17750 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17760 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17770 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
17780 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17790 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
177a0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
177b0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
177c0 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c  int index, doubl
177d0 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
177e0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
177f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17800 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17820 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17830 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17840 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17850 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17860 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17870 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17880 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17890 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
178a0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
178b0 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  nd_int(IntPtr st
178c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
178d0 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  nt value);....  
178e0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
178f0 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
17900 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
17910 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f  e3_bind_int"; ho
17920 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68  wever, it has th
17930 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
17940 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67  correct type sig
17950 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e  nature for an un
17960 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20  signed (32-bit) 
17970 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
17980 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17990 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
179a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
179b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
179c0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
179d0 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61  e3_bind_int", Ca
179e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
179f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17a00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17a10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
17a30 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17a40 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d  ite3_bind_int")]
17a50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17a60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17a70 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17a80 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
17a90 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74  d_uint(IntPtr st
17aa0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
17ab0 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
17ac0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17ad0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17ae0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17af0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17b00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17b10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17b20 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
17b30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17b40 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
17b50 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
17b60 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
17b70 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c  mt, int index, l
17b80 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
17b90 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dif....    //.. 
17ba0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
17bb0 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
17bc0 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
17bd0 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72  _int64"; however
17be0 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
17bf0 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
17c00 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
17c10 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
17c20 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20  d long (64-bit) 
17c30 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
17c40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17c50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17c60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17c70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
17c80 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
17c90 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20  e3_bind_int64", 
17ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17cb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17cc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
17cd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17ce0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
17cf0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
17d00 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e  3_bind_uint64(In
17d10 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
17d20 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75  ndex, ulong valu
17d30 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
17d40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17d50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17d70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17d80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17d90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17da0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17db0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17dc0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17dd0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17de0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17df0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17e00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
17e10 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  l(IntPtr stmt, i
17e20 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
17e30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17e40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17e50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17e60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17e70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17e80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17e90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17ea0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17eb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17ec0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17ed0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17ee0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17ef0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
17f00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
17f10 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20  t index, byte[] 
17f20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
17f30 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
17f40 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
17f50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17f60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17f70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17f80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17f90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17fa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17fb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17fc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17fd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
17fe0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17ff0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18000 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
18010 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ter_count(IntPtr
18020 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
18030 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18040 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18050 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18060 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18070 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18080 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18090 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
180a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
180b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
180c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
180d0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
180e0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
180f0 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74  ameter_index(Int
18100 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d  Ptr stmt, byte[]
18110 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   strName);....#i
18120 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18130 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18140 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18150 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18160 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18170 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18180 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18190 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
181a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
181b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
181c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
181d0 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
181e0 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  n_count(IntPtr s
181f0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
18200 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18210 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18220 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18230 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18240 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18250 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18260 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18270 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18280 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18290 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
182a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
182b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
182c0 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74  3_step(IntPtr st
182d0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
182e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
182f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18300 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18310 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18320 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18340 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18350 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18360 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18370 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18380 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18390 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
183a0 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ly(IntPtr stmt);
183b0 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d   /* 3.7.4+ */...
183c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
183d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
183e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
183f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18400 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
18430 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18440 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
18450 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
18460 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
18470 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
18480 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
18490 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
184a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
184b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
184c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
184d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
184e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
184f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18500 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18510 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18520 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18530 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
18540 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
18550 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
18560 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
18570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
185a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
185b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
185c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
185d0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
185e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
185f0 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
18600 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
18610 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18620 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
18630 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18640 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18650 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18660 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18670 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18680 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18690 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
186a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
186b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
186c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
186d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
186e0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
186f0 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72  lumn_blob(IntPtr
18700 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18710 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18720 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18730 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18750 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18760 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18770 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18780 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18790 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
187a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
187b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
187c0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
187d0 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
187e0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
187f0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
18800 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18810 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18820 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18830 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18840 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18860 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18880 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18890 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
188a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
188b0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
188c0 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73  bytes16(IntPtr s
188d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
188e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
188f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18900 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18910 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18920 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18930 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18940 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18950 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18960 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18970 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18980 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18990 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
189a0 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
189b0 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
189c0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
189d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
189e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
189f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18a00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18a10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18a20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18a30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18a40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18a50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18a60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
18a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18a80 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
18a90 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
18aa0 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
18ab0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
18ac0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
18ad0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
18ae0 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
18af0 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
18b00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18b10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18b20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18b30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18b40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18b50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18b60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18b70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18b80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18b90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18ba0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
18bb0 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
18bc0 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
18bd0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
18be0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18bf0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18c00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18c10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18c20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18c30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18c40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18c50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18c60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18c70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18c80 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18c90 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
18ca0 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
18cb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18cc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18cd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18ce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18cf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18d00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18d10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18d20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18d30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18d40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18d50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18d60 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
18d70 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
18d80 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
18d90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18da0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18dc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18dd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18de0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18df0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18e00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18e10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18e20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18e30 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
18e40 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
18e50 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29  ytes16(IntPtr p)
18e60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18e70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18e80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18ea0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18eb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18ec0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
18ed0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18ee0 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
18ef0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
18f00 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b  ouble(IntPtr p);
18f10 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
18f20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18f30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18f40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18f50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18f60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18f70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18f80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18f90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18fa0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18fb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18fc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
18fd0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
18fe0 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
18ff0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19000 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19010 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19020 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19030 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19040 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19050 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
19060 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19070 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
19080 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
19090 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
190a0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
190b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
190c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
190d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
190e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
190f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19100 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19110 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19150 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
19160 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
19170 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
19180 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19190 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
191a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
191b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
191c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
191d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
191e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
191f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19200 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19210 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19220 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19230 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
19240 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e  3_result_blob(In
19250 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
19260 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
19270 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76  nSize, IntPtr pv
19280 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
19290 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
192a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
192b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
192c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
192d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
192e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
192f0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
19300 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19310 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
19320 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
19330 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
19340 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
19350 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
19360 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19370 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
19380 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19390 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
193a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
193b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
193c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
193d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
193e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
193f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19400 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
19410 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
19420 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
19430 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
19440 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
19450 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19480 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19490 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
194a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
194b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
194c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
194d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
194e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
194f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19500 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
19510 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28  sult_error_code(
19520 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
19530 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19540 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
19550 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19560 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19570 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19580 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
19590 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
195a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
195b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
195c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
195d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
195e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
195f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
19600 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
19610 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74  error_toobig(Int
19620 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
19630 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19640 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19650 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19660 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19670 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19680 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19690 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
196a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
196b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
196c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
196d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
196e0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
196f0 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
19700 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  m(IntPtr context
19710 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19720 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19730 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19750 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19760 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19770 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19780 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19790 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
197a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
197b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
197c0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
197d0 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65  te3_result_value
197e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
197f0 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d   IntPtr value);.
19800 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19810 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19820 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19830 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19840 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19850 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19860 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19870 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19890 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
198a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
198b0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
198c0 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
198d0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
198e0 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
198f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19900 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19910 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19920 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19930 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19940 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19950 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19960 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19970 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19980 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19990 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
199a0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
199b0 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63  ult_int(IntPtr c
199c0 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75  ontext, int valu
199d0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
199e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
199f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19a00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19a10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19a20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19a30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19a40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19a50 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
19a60 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
19a70 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e  int64(IntPtr con
19a80 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  text, long value
19a90 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
19aa0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19ab0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19ac0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19ad0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19ae0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19af0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19b00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19b10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19b20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19b30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19b40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
19b50 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
19b60 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
19b70 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
19b80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19b90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19ba0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19bb0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19bc0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19bd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19be0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19bf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19c00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19c10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19c20 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
19c30 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
19c40 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
19c50 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
19c60 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
19c70 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
19c80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19c90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19ca0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19cb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19cc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19cd0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19ce0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19cf0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19d00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19d10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19d20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19d30 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
19d40 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
19d50 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
19d60 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
19d70 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
19d80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19d90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19da0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19db0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19dc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19dd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
19de0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
19df0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
19e00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
19e10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
19e20 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
19e30 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
19e40 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19e50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19e60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19e70 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
19e80 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
19e90 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
19ea0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
19eb0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
19ec0 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
19ed0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19ee0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19ef0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19f00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19f10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
19f30 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
19f40 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
19f50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19f60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19f70 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
19f80 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
19f90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19fa0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19fb0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
19fc0 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
19fd0 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
19fe0 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
19ff0 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1a000 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a010 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a020 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a030 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a040 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a050 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a060 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1a070 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1a080 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a090 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a0a0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
1a0b0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
1a0c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1a0d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a0e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1a0f0 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
1a100 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
1a110 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
1a120 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
1a130 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
1a140 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
1a150 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
1a160 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54  E_SEE..#if !PLAT
1a170 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a180 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a190 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a1a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a1b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a1c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a1d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1a1e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a1f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a200 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a210 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1a220 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1a230 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
1a240 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
1a250 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  eylen);....#if !
1a260 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a270 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a290 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a2a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a2b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a2c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a2d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a2e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a2f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a300 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a310 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a320 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72  te3_rekey(IntPtr
1a330 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
1a340 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23   int keylen);..#
1a350 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54  endif....#if INT
1a360 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50  EROP_INCLUDE_ZIP
1a370 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  VFS..#if !PLATFO
1a380 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a390 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a3a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a3b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a3c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a3d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a3e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a3f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a400 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a410 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a420 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
1a430 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23  sInit_v2();....#
1a440 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a450 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a460 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a470 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a480 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a490 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a4a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a4b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a4c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a4d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a4e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a4f0 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f  void zipvfsInit_
1a500 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b  v3(int regDflt);
1a510 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1a520 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a530 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a550 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a560 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a580 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a590 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a5a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a5b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a5c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1a5d0 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
1a5e0 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74  ss_handler(IntPt
1a5f0 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53  r db, int ops, S
1a600 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c  QLiteProgressCal
1a610 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1a620 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1a630 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a640 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a650 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a660 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a670 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a690 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a6a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a6b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a6c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a6d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a6e0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
1a6f0 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e  et_authorizer(In
1a700 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41  tPtr db, SQLiteA
1a710 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63  uthorizerCallbac
1a720 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1a730 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1a740 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a750 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a770 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a780 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a7a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a7b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a7c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a7d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a7e0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a7f0 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74  tr sqlite3_updat
1a800 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  e_hook(IntPtr db
1a810 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61  , SQLiteUpdateCa
1a820 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1a830 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1a840 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a850 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a860 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a870 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1a880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1a890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a8a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1a8b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a8c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1a8d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1a8e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a8f0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1a900 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50  commit_hook(IntP
1a910 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d  tr db, SQLiteCom
1a920 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  mitCallback func
1a930 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
1a940 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a960 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a970 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a990 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a9a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a9b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a9c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a9d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a9e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a9f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1aa00 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74  ite3_trace(IntPt
1aa10 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63  r db, SQLiteTrac
1aa20 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
1aa30 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
1aa40 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20  ...    // Since 
1aa50 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
1aa60 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c   takes a variabl
1aa70 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c  e argument list,
1aa80 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72   we have to over
1aa90 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e  load declaration
1aaa0 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c  s..    // for al
1aab0 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73  l possible calls
1aac0 20 74 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f   that we want to
1aad0 20 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54   use...#if !PLAT
1aae0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aaf0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ab00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ab10 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1ab20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
1ab30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ab40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ab50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ab60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ab70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ab80 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1ab90 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
1aba0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1abb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1abc0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1abd0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
1abe0 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65  nfig_none(SQLite
1abf0 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
1ac00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ac10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ac20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ac30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ac40 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1ac50 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20  qlite3_config", 
1ac60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ac70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ac80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ac90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1aca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1acb0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1acc0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d  qlite3_config")]
1acd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ace0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1acf0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1ad00 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  Code sqlite3_con
1ad10 66 69 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f  fig_int(SQLiteCo
1ad20 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  nfigOpsEnum op, 
1ad30 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
1ad40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ad50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ad60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ad70 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1ad80 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1ad90 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
1ada0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1adb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1adc0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1add0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ade0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1adf0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1ae00 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
1ae10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ae20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1ae30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1ae40 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67  lite3_config_log
1ae50 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
1ae60 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c  Enum op, SQLiteL
1ae70 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ogCallback func,
1ae80 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
1ae90 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1aea0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1aeb0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1aec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1aed0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1aee0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c  ite3_db_config",
1aef0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1af00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1af10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1af20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1af30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1af40 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1af50 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
1af60 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1af70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1af80 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1af90 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1afa0 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72  _db_config_int_r
1afb0 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64 62 2c  efint(IntPtr db,
1afc0 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
1afd0 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
1afe0 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20 72 65  alue, ref int re
1aff0 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  sult);....#if !P
1b000 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b010 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b020 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b030 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b040 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b050 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b060 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b070 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b080 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b090 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b0a0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1b0b0 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  r sqlite3_rollba
1b0c0 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  ck_hook(IntPtr d
1b0d0 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  b, SQLiteRollbac
1b0e0 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  kCallback func, 
1b0f0 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
1b100 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b110 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b120 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b130 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b150 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b160 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b170 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b190 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b1a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b1b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1b1c0 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
1b1d0 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
1b1e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b1f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b210 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b220 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b240 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b250 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b260 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b270 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b280 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1b290 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1b2a0 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73  qlite3_db_releas
1b2b0 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20  e_memory(IntPtr 
1b2c0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
1b2d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b2e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1b2f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b300 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1b310 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1b320 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b330 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1b340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b350 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1b360 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1b370 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1b380 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
1b390 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ame(IntPtr db, I
1b3a0 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a  ntPtr dbName);..
1b3b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b3c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b3d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b3e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b3f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b410 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b420 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b430 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b440 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b450 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b460 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64  rn int sqlite3_d
1b470 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74  b_readonly(IntPt
1b480 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e  r db, IntPtr dbN
1b490 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
1b4a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b4b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b4c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b4d0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1b4e0 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1b4f0 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43  ename", CallingC
1b500 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b510 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b520 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1b530 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b540 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1b550 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
1b560 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23  b_filename")]..#
1b570 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b580 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b590 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b5a0 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74  _db_filename_byt
1b5b0 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  es(IntPtr db, by
1b5c0 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d  te[] dbName);...
1b5d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b5e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b5f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b600 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b610 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b630 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b640 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b650 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b660 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b670 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b680 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b690 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74  _next_stmt(IntPt
1b6a0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d  r db, IntPtr stm
1b6b0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1b6c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b6d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b6e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b6f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b700 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b710 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b720 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b730 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b740 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b750 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b760 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1b770 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1b780 65 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20  exec(IntPtr db, 
1b790 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49  byte[] strSql, I
1b7a0 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b  ntPtr pvCallback
1b7b0 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d  , IntPtr pvParam
1b7c0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72  , ref IntPtr err
1b7d0 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Msg);....#if !PL
1b7e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b7f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b800 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b810 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b820 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b830 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b840 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b850 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b860 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b870 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b880 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1b890 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
1b8a0 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29  mory(int nBytes)
1b8b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b8c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b8d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b8e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b8f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b900 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b910 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b920 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b930 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b940 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b950 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b960 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1b970 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
1b980 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
1b990 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b9a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b9b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b9c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b9d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b9e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b9f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ba00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ba10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ba20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ba30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ba40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1ba50 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
1ba60 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49  d_result_codes(I
1ba70 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e  ntPtr db, int on
1ba80 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  off);....#if !PL
1ba90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1baa0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bab0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bac0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bad0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bae0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1baf0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bb00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bb10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bb20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bb30 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1bb40 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1bb50 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  3_errcode(IntPtr
1bb60 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
1bb70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bb80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bb90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bba0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bbb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bbc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bbd0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bbe0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bbf0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bc00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bc10 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1bc20 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1bc30 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
1bc40 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
1bc50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bc60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bc70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bc80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1bc90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1bca0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bcb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1bcc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1bcd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1bce0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1bcf0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1bd00 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1bd10 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45  3_errstr(SQLiteE
1bd20 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a  rrorCode rc); /*
1bd30 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20   3.7.15+ */.... 
1bd40 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
1bd50 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20  te3_log() takes 
1bd60 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
1bd70 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
1bd80 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
1bd90 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
1bda0 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
1bdb0 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20  ble calls.  For 
1bdc0 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79  now, we are only
1bdd0 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67   exposing a sing
1bde0 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a  le string, and..
1bdf0 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e      // depend on
1be00 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66   the caller to f
1be10 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67  ormat the string
1be20 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1be30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1be40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1be50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1be60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1be70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1be80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1be90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1bea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1beb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1bec0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bed0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1bee0 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72  _log(SQLiteError
1bef0 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62  Code iErrCode, b
1bf00 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d  yte[] zFormat);.
1bf10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1bf20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1bf30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1bf40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1bf50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1bf60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1bf70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1bf80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1bf90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bfa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1bfb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bfc0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1bfd0 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  ode sqlite3_file
1bfe0 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20  _control(IntPtr 
1bff0 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61  db, byte[] zDbNa
1c000 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50  me, int op, IntP
1c010 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66  tr pArg);....#if
1c020 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c030 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c050 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c060 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c070 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c080 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c0a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c0b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c0c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c0d0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63  tPtr sqlite3_bac
1c0e0 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20  kup_init(IntPtr 
1c0f0 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a  destDb, byte[] z
1c100 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72  DestName, IntPtr
1c110 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b   sourceDb, byte[
1c120 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ] zSourceName);.
1c130 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c140 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c150 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c160 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c170 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c180 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c190 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c1a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c1b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c1c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c1d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c1e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c1f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
1c200 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62  up_step(IntPtr b
1c210 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65  ackup, int nPage
1c220 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c230 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c240 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c250 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c260 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c270 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c280 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c290 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c2a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c2b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c2c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c2d0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1c2e0 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e  e3_backup_remain
1c2f0 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ing(IntPtr backu
1c300 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1c310 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c320 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c330 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c340 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c350 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c360 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c370 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c380 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c390 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c3a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c3b0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1c3c0 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63  te3_backup_pagec
1c3d0 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b  ount(IntPtr back
1c3e0 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
1c3f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c400 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c410 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c420 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c430 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c440 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c450 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c470 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c480 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c490 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1c4a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1c4b0 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50  _blob_close(IntP
1c4c0 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  tr blob);....#if
1c4d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c4e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c4f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c500 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c510 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c520 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c530 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c550 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c560 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c570 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1c580 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62  t sqlite3_blob_b
1c590 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62  ytes(IntPtr blob
1c5a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c5b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c5c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c5d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c5e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c5f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c600 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c610 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c620 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c630 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c640 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c650 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1c660 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1c670 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20  lob_open(IntPtr 
1c680 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
1c690 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
1c6a0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
1c6b0 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69  e, long rowId, i
1c6c0 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e  nt flags, ref In
1c6d0 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a  tPtr ptrBlob);..
1c6e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c6f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c700 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c710 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c720 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c730 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c740 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c750 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c770 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c780 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c790 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c7a0 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
1c7b0 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62  read(IntPtr blob
1c7c0 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d  , [MarshalAs(Unm
1c7d0 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72  anagedType.LPArr
1c7e0 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66  ay)] byte[] buff
1c7f0 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69  er, int count, i
1c800 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23  nt offset);....#
1c810 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c820 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c830 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c840 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c850 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c860 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c870 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c880 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c890 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c8a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c8b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c8c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c8d0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f  sqlite3_blob_reo
1c8e0 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c  pen(IntPtr blob,
1c8f0 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d   long rowId);...
1c900 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c910 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c930 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c950 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c960 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c970 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c980 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c990 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c9a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c9b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1c9c0 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77  e sqlite3_blob_w
1c9d0 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62  rite(IntPtr blob
1c9e0 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d  , [MarshalAs(Unm
1c9f0 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72  anagedType.LPArr
1ca00 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66  ay)] byte[] buff
1ca10 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69  er, int count, i
1ca20 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23  nt offset);....#
1ca30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ca40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ca50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ca60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ca70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ca80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ca90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1caa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cab0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1cac0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cad0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cae0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1caf0 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
1cb00 76 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20  vtab(IntPtr db, 
1cb10 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d  IntPtr zSQL);...
1cb20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cb30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cb40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cb50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1cb60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1cb70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1cb80 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1cb90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cba0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1cbb0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1cbc0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cbd0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1cbe0 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20  _mprintf(IntPtr 
1cbf0 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73  format, __arglis
1cc00 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  t);..    #endreg
1cc10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51  ion....    // SQ
1cc20 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74  Lite API calls t
1cc30 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64  hat are provided
1cc40 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22   by "well-known"
1cc50 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74   extensions that
1cc60 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c   may be statical
1cc70 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65  ly..    // linke
1cc80 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
1cc90 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69  e core native li
1cca0 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20  brary currently 
1ccb0 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65  in use...    #re
1ccc0 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73  gion extension s
1ccd0 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
1cce0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
1ccf0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
1cd00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cd10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cd20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cd30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1cd40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1cd50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1cd60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1cd70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cd80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1cd90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cda0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1cdb0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
1cdc0 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
1cdd0 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
1cde0 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
1cdf0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
1ce00 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
1ce10 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
1ce20 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
1ce30 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
1ce40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ce50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ce60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ce70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ce80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ce90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cea0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ceb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cec0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ced0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cee0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1cef0 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
1cf00 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
1cf10 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
1cf20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1cf30 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf80 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1cf90 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20   sqlite interop 
1cfa0 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20  api calls (.NET 
1cfb0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1cfc0 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41  k only)..#if PLA
1cfd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cfe0 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54  MEWORK && !SQLIT
1cff0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
1d000 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d010 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d020 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d030 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1d040 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
1d050 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
1d060 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72  r db, ref long r
1d070 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owId);....    [D
1d080 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d090 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1d0a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d0b0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
1d0c0 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72  emory_used_inter
1d0d0 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  op(ref long byte
1d0e0 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
1d0f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d100 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d110 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1d120 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
1d130 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74  ry_highwater_int
1d140 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c  erop(int resetFl
1d150 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74  ag, ref long byt
1d160 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  es);....    [Dll
1d170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d180 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d190 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d1a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d1b0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1d1c0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
1d1d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1d1e0 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  ex, ref double v
1d1f0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
1d200 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d210 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1d220 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d230 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1d240 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
1d250 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
1d260 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d270 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
1d280 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1d290 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d2a0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1d2b0 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
1d2c0 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d  nt64_interop")].
1d2d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d2e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1d2f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1d300 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f  te3_bind_uint64_
1d310 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1d320 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1d330 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ref ulong value)
1d340 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1d350 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d360 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d370 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1d380 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  d sqlite3_column
1d390 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
1d3a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1d3b0 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
1d3c0 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
1d3d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d3e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d3f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d400 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1d410 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f  e3_column_int64_
1d420 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1d430 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1d440 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
1d450 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d470 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d480 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1d490 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
1d4a0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
1d4b0 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62  tPtr p, ref doub
1d4c0 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
1d4d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d4e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d4f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d500 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1d510 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
1d520 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
1d530 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
1d540 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d560 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d570 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1d580 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1d590 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  t_double_interop
1d5a0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1d5b0 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
1d5c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
1d5d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d5e0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d5f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1d600 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1d610 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  lt_int64_interop
1d620 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1d630 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
1d640 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d650 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d660 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d670 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1d680 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65  tPtr sqlite3_cre
1d690 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
1d6a0 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a  odule_interop(..
1d6b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
1d6c0 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20  b, IntPtr name, 
1d6d0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20  IntPtr pModule, 
1d6e0 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43  int iVersion, xC
1d6f0 72 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a  reate xCreate,..
1d700 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74          xConnect
1d710 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74   xConnect, xBest
1d720 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
1d730 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44  , xDisconnect xD
1d740 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20  isconnect,..    
1d750 20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65      xDestroy xDe
1d760 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70  stroy, xOpen xOp
1d770 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  en, xClose xClos
1d780 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  e, xFilter xFilt
1d790 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65  er,..        xNe
1d7a0 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78  xt xNext, xEof x
1d7b0 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  Eof, xColumn xCo
1d7c0 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f  lumn, xRowId xRo
1d7d0 77 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70  wId, xUpdate xUp
1d7e0 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78  date,..        x
1d7f0 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53  Begin xBegin, xS
1d800 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d  ync xSync, xComm
1d810 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c  it xCommit, xRol
1d820 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c  lback xRollback,
1d830 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46  ..        xFindF
1d840 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
1d850 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78  ction, xRename x
1d860 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69  Rename, xSavepoi
1d870 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a  nt xSavepoint,..
1d880 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65          xRelease
1d890 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c   xRelease, xRoll
1d8a0 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b  backTo xRollback
1d8b0 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  To, IntPtr pClie
1d8c0 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20  ntData,..       
1d8d0 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
1d8e0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b  xDestroyModule);
1d8f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
1d900 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1d910 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
1d920 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1d930 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1d940 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1d9a0 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65   Native Delegate
1d9b0 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
1d9c0 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69  IRTUAL_TABLE..#i
1d9d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d9e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d9f0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1da00 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1da10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1da20 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1da30 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1da40 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1da50 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20  de xCreate(..   
1da60 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
1da70 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1da80 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
1da90 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
1daa0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
1dab0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
1dac0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1dad0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1dae0 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
1daf0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1db50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1db60 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1db70 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1db80 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1db90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1dba0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1dbb0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1dbc0 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63  rrorCode xConnec
1dbd0 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1dbe0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
1dbf0 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
1dc00 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
1dc10 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1dc20 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
1dc30 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
1dc40 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
1dc50 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
1dc60 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1dc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1dcc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dcd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1dce0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1dcf0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1dd00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dd10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1dd20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1dd30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1dd40 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
1dd50 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1dd60 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
1dd70 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29  tr pIndex..    )
1dd80 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddd0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1dde0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ddf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1de00 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1de10 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1de20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1de30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1de40 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1de50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69  iteErrorCode xDi
1de60 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
1de70 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1de80 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1de90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1deb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ded0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1dee0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1def0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1df00 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1df10 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1df20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1df30 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1df40 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1df50 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1df60 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
1df70 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1df80 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
1df90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1dfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1dfe0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1dff0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e000 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1e010 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1e020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e030 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1e040 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1e050 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1e060 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
1e070 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1e080 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
1e090 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
1e0a0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1e0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1e100 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e120 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1e130 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1e140 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e150 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1e160 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1e170 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1e180 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20  de xClose(..    
1e190 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
1e1a0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1e1b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e200 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e210 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e220 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1e230 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1e240 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e250 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1e260 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1e270 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1e280 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a  rCode xFilter(..
1e290 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1e2a0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
1e2b0 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20   int idxNum,..  
1e2c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78        IntPtr idx
1e2d0 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Str,..        in
1e2e0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1e2f0 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
1e300 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1e310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e350 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1e360 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e370 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e380 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1e390 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1e3a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e3b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e3c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1e3d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e3e0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
1e3f0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
1e400 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1e410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e450 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1e460 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e470 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e480 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1e490 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1e4a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e4b0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1e4c0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1e4d0 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20  e int xEof(..   
1e4e0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1e4f0 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
1e500 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e550 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e560 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e570 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1e580 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1e590 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e5a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1e5b0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1e5c0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1e5d0 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
1e5e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1e5f0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
1e600 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
1e610 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  t,..        int 
1e620 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  index..    );...
1e630 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1e640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e680 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e690 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e6a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1e6b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1e6c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1e6d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1e6e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1e6f0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1e700 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28  rrorCode xRowId(
1e710 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1e720 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
1e730 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
1e740 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  d..    );....   
1e750 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e7a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e7b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e7c0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1e7d0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1e7e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e7f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1e800 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1e810 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1e820 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
1e830 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1e840 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1e850 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1e860 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
1e870 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
1e880 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
1e890 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e8f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e900 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1e910 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1e920 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1e930 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1e940 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1e950 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1e960 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28  rrorCode xBegin(
1e970 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1e980 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
1e990 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1e9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9e0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1e9f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ea00 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1ea10 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1ea20 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1ea30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ea40 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1ea50 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1ea60 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
1ea70 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ea80 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
1ea90 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1eaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eae0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1eaf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1eb00 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1eb10 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1eb20 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1eb30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1eb40 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1eb50 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1eb60 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69  ErrorCode xCommi
1eb70 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1eb80 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
1eb90 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebe0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1ebf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ec00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1ec10 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1ec20 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1ec30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ec40 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1ec50 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1ec60 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
1ec70 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
1ec80 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1ec90 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1eca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ece0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1ecf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ed00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ed10 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1ed20 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1ed30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ed40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ed50 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1ed60 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
1ed70 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
1ed80 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1ed90 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
1eda0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
1edb0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  me,..        ref
1edc0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
1edd0 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
1ede0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55     ref IntPtr pU
1edf0 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d  serData..    );.
1ee00 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1ee10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee50 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1ee60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ee70 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1ee80 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1ee90 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1eea0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1eeb0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1eec0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1eed0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61  eErrorCode xRena
1eee0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  me(..        Int
1eef0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1ef00 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
1ef10 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1ef20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1ef70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ef80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ef90 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1efa0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1efb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1efc0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1efd0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1efe0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1eff0 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
1f000 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1f010 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
1f020 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1f030 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f080 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1f090 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f0a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f0b0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1f0c0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1f0d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f0e0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1f0f0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1f100 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f110 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
1f120 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1f130 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
1f140 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
1f150 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1f160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1a0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1f1b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f1c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1f1d0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1f1e0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1f1f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1f200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1f210 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1f220 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
1f230 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
1f240 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1f250 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
1f260 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
1f270 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1f2d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f2e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1f2f0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1f300 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1f310 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f320 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1f330 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  ic delegate void
1f340 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28   xDestroyModule(
1f350 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
1f360 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ta);..#endif..  
1f370 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1f380 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f3d0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e  ...    #region N
1f3e0 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73  ative Structures
1f3f0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
1f400 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
1f410 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1f420 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1f430 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
1f440 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
1f450 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
1f460 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
1f470 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d  c int iVersion;.
1f480 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f490 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b  xCreate xCreate;
1f4a0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f4b0 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
1f4c0 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
1f4d0 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78  lic xBestIndex x
1f4e0 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20  BestIndex;..    
1f4f0 20 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63      public xDisc
1f500 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
1f510 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
1f520 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65  lic xDestroy xDe
1f530 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20  stroy;..        
1f540 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
1f550 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  en;..        pub
1f560 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  lic xClose xClos
1f570 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1f580 69 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  ic xFilter xFilt
1f590 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  er;..        pub
1f5a0 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b  lic xNext xNext;
1f5b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f5c0 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20   xEof xEof;..   
1f5d0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c       public xCol
1f5e0 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  umn xColumn;..  
1f5f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
1f600 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20  wId xRowId;..   
1f610 20 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64       public xUpd
1f620 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20  ate xUpdate;..  
1f630 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
1f640 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
1f650 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e       public xSyn
1f660 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20  c xSync;..      
1f670 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74    public xCommit
1f680 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20   xCommit;..     
1f690 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
1f6a0 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a  ack xRollback;..
1f6b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1f6c0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
1f6d0 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20  ndFunction;..   
1f6e0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e       public xRen
1f6f0 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20  ame xRename;..  
1f700 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74        /* The met
1f710 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69  hods above are i
1f720 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74  n version 1 of t
1f730 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  he sqlite3_modul
1f740 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62  e..         * ob
1f750 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c  ject.  Those bel
1f760 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
1f770 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72  on 2 and greater
1f780 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  . */..        pu
1f790 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20  blic xSavepoint 
1f7a0 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20  xSavepoint;..   
1f7b0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c       public xRel
1f7c0 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a  ease xRelease;..
1f7d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1f7e0 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
1f7f0 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
1f800 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f850 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
1f860 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
1f870 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
1f880 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
1f890 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
1f8a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1f8b0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
1f8c0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
1f8d0 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66   public int nRef
1f8e0 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55  ; /* NO LONGER U
1f8f0 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1f900 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45  public IntPtr zE
1f910 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rrMsg;..    }...
1f920 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f970 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1f980 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1f990 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1f9a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1f9b0 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
1f9c0 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20  cursor..    {.. 
1f9d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1f9e0 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20  tPtr pVTab;..   
1f9f0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1fa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1fa50 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1fa60 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1fa70 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1fa80 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1fa90 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1faa0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1fab0 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
1fac0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1fad0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1fae0 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
1faf0 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d  aint constraint.
1fb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1fb10 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1fb20 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1fb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1fb40 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e  (constraint != n
1fb50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1fb60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1fb70 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63       iColumn = c
1fb80 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d  onstraint.iColum
1fb90 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
1fba0 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61      op = constra
1fbb0 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20  int.op;..       
1fbc0 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20           usable 
1fbd0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61  = constraint.usa
1fbe0 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
1fbf0 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65        iTermOffse
1fc00 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  t = constraint.i
1fc10 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
1fc20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1fc30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1fc40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1fc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1fc90 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
1fca0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
1fcb0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
1fcc0 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20  dexConstraintOp 
1fcd0 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  op;..        pub
1fce0 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
1fcf0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1fd00 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
1fd10 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1fd70 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1fd80 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1fd90 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1fda0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1fdb0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
1fdc0 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rby..    {..    
1fdd0 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
1fde0 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
1fdf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1fe00 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
1fe10 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
1fe20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1fe30 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
1fe40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fe50 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72         if (order
1fe60 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  By != null)..   
1fe70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1fe80 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
1fe90 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43  umn = orderBy.iC
1fea0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
1feb0 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f          desc = o
1fec0 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20  rderBy.desc;..  
1fed0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1fee0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1fef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ff40 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1ff50 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
1ff60 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
1ff70 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
1ff80 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75  e desc;   /* Tru
1ff90 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
1ffa0 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a  se for ASC. */..
1ffb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20000 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
20010 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
20020 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
20030 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
20040 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
20050 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
20060 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b  int_usage..    {
20070 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20080 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
20090 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
200a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
200b0 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
200c0 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61  intUsage constra
200d0 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
200e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
200f0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
20100 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20110 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
20120 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c  aintUsage != nul
20130 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20140 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20150 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63     argvIndex = c
20160 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61  onstraintUsage.a
20170 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rgvIndex;..     
20180 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20             omit 
20190 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
201a0 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20  e.omit;..       
201b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
201c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
201d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20210 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20220 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
20230 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20  ndex; /* if >0, 
20240 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
20250 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
20260 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
20270 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d    public byte om
20280 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f  it;     /* Do no
20290 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
202a0 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
202b0 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  t */..    }.... 
202c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
202d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20310 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
20320 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
20330 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
20340 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
20350 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
20360 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nfo..    {..    
20370 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f      /* Inputs */
20380 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20390 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
203a0 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65  ; /* Number of e
203b0 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74  ntries in aConst
203c0 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20  raint */..      
203d0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
203e0 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20  aConstraint;..  
203f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
20400 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a   nOrderBy;    /*
20410 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
20420 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a  es in aOrderBy *
20430 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
20440 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
20450 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
20460 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
20470 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
20480 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
20490 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
204a0 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20  ic int idxNum;  
204b0 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
204c0 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
204d0 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
204e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
204f0 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20   string idxStr; 
20500 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67         /* String
20510 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69  , possibly obtai
20520 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
20530 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20  _malloc */..    
20540 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
20550 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
20560 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
20570 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
20580 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
20590 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
205a0 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
205b0 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66  med;  /* True if
205c0 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61   output is alrea
205d0 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20  dy ordered */.. 
205e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
205f0 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f  uble estimatedCo
20600 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  st; /* Estimated
20610 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
20620 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  his index */..  
20630 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e        public lon
20640 67 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b  g estimatedRows;
20650 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20     /* Estimated 
20660 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72  number of rows r
20670 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20  eturned */..    
20680 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
20690 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46  eIndexFlags idxF
206a0 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66  lags; /* Mask of
206b0 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43   SQLITE_INDEX_SC
206c0 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20  AN_* flags */.. 
206d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
206e0 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20  ng colUsed;     
206f0 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61      /* Input: Ma
20700 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73  sk of columns us
20710 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20  ed by statement 
20720 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  */..    }..#endi
20730 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
20740 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
20750 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
20760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
207b0 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63  gion .NET Compac
207c0 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c  t Framework (onl
207d0 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  y) CriticalHandl
207e0 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41  e Class..#if PLA
207f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20800 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
20810 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
20820 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
20830 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
20840 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
20850 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
20860 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
20870 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
20880 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
20890 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49  CriticalHandle(I
208a0 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e  ntPtr invalidHan
208b0 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  dleValue)..    {
208c0 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
208d0 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
208e0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43  lue;..      _isC
208f0 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  losed = false;..
20900 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72      }....    ~Cr
20910 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a  iticalHandle()..
20920 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
20930 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
20940 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
20950 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28  te void Cleanup(
20960 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
20970 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a  if (!IsClosed)..
20980 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20990 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20   this._isClosed 
209a0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
209b0 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29   if (!IsInvalid)
209c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
209d0 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61         ReleaseHa
209e0 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ndle();..       
209f0 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
20a00 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
20a10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20a20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
20a30 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73  public void Clos
20a40 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
20a50 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
20a60 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
20a70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
20a80 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
20a90 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
20aa0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
20ab0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
20ac0 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
20ad0 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
20ae0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65      {..      Cle
20af0 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  anup();..    }..
20b00 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
20b10 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65  abstract bool Re
20b20 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a  leaseHandle();..
20b30 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
20b40 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
20b50 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20  ntPtr value)..  
20b60 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
20b70 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  e = value;..    
20b80 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
20b90 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73  void SetHandleAs
20ba0 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b  Invalid()..    {
20bb0 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
20bc0 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
20bd0 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
20be0 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
20bf0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
20c00 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a   bool IsClosed..
20c10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
20c20 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f   { return _isClo
20c30 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  sed; }..    }...
20c40 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
20c50 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
20c60 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  lid..    {..    
20c70 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
20c80 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  .  }..#endif..  
20c90 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
20ca0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20cf0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
20d00 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
20d10 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
20d20 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e  / Handles the un
20d30 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65  managed database
20d40 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72   pointer, and pr
20d50 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
20d60 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70  ion..    // supp
20d70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20  ort for it...   
20d80 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
20d90 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e   class SQLiteCon
20da0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20  nectionHandle : 
20db0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
20dc0 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54      {..#if SQLIT
20dd0 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50  E_STANDARD && !P
20de0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20df0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
20e00 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
20e10 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f  ate void CloseCo
20e20 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
20e30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
20e40 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
20e50 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
20e60 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  r db);....      
20e70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20e80 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  c CloseConnectio
20e90 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43  nCallback closeC
20ea0 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20  onnection =..   
20eb0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
20ec0 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
20ed0 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
20ee0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20f30 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
20f40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20f50 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
20f60 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
20f70 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
20f80 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
20f90 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
20fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fe0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20ff0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f    private bool o
21000 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  wnHandle;....   
21010 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21060 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21070 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
21080 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
21090 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
210a0 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20  andle db)..     
210b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
210c0 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c    if (db != null
210d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
210e0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
210f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21110 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f   lock (db.syncRo
21120 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21150 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61      return db.ha
21160 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
21170 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21180 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
21190 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
211a0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
211b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21200 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21210 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
21220 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
21230 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f  e(IntPtr db, boo
21240 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
21250 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
21260 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
21270 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
21280 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21290 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
212a0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
212b0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
212c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
212d0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
212e0 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48  ownHandle = ownH
212f0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
21300 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
21310 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  e(db);..        
21320 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
21330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21380 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
21390 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
213a0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f  nectionHandle(bo
213b0 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
213c0 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
213d0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
213e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
213f0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
21400 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e           if (own
21410 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
21420 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
21430 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
21440 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
21450 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
21460 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21470 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
21480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
214d0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
214e0 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
214f0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
21500 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
21510 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21520 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
21530 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
21540 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21550 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21560 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48         if (!ownH
21570 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72  andle) return tr
21580 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
21590 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
215a0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
215b0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
215c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
215d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
215e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
215f0 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
21600 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
21610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21620 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
21630 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
21640 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
21650 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
21660 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
21670 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
21680 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
21690 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f               clo
216a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
216b0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
216c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
216d0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
216e0 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
216f0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
21710 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
21720 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
21730 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
21740 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  ndif....#if !NET
21750 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
21760 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
21770 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
21780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21790 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
217a0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
217b0 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
217c0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
217d0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
217e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
217f0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
21800 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
21810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21820 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
21830 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ion: {0}", local
21840 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
21850 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
21860 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21870 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
21880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21890 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
218a0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
218b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
218c0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
218d0 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
218e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
218f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21900 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
21910 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
21920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21940 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
21950 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
21960 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65  ion(this, handle
21970 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21980 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
21990 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
219a0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
219b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
219c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
219d0 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
219e0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
219f0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
21a00 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
21a10 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
21a20 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
21a30 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
21a40 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
21a50 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
21a60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21a70 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
21a80 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
21a90 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
21aa0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
21ab0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
21ac0 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
21ad0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
21ae0 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
21af0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21b00 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
21b10 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
21b20 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
21b30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
21b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21b50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21b60 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
21b70 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
21b80 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
21b90 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
21ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
21bb0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
21bc0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
21bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21be0 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
21bf0 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
21c00 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
21c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
21c30 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
21c40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
21c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c60 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
21c70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21c80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
21c90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21ca0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21cb0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
21cc0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
21cd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21ce0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21cf0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
21d00 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
21d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21d30 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
21d40 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
21d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
21d70 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
21d80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
21d90 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
21da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21db0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
21dc0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21dd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
21e20 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
21e30 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21e40 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
21e50 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
21e60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
21e70 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
21e80 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
21e90 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f  ugData.connectio
21ea0 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  nCount);..      
21eb0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
21ec0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
21ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21f10 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
21f20 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d   bool OwnHandle.
21f30 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
21f40 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
21f50 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
21f60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21f70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
21f80 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
21f90 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
21fa0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
21fb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21fc0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21fd0 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  n ownHandle;..  
21fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
22000 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
22010 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
22020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
22060 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
22070 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
22080 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
22090 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
220a0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
220b0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
220c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
220d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
220e0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
220f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
22100 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22120 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
22130 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
22140 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22150 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22160 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
22170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
22180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221c0 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
221d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
221e0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
221f0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
22200 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
22210 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22220 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
22230 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
22240 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22250 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22260 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22270 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
22280 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22290 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
222a0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
222b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
222c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22310 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
22320 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
22330 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
22340 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
22350 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
22360 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
22370 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e  Lite statements.
22380 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22390 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
223a0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
223b0 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
223c0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
223d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
223e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
223f0 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
22400 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
22410 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
22420 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
22430 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22480 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
22490 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
224a0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
224b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
224c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
22510 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
22520 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
22530 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  tr(SQLiteStateme
22540 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a  ntHandle stmt)..
22550 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22560 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20         if (stmt 
22570 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
22580 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
22590 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
225a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
225b0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
225c0 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  mt.syncRoot)..#e
225d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
225e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
225f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
22600 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b  urn stmt.handle;
22610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22620 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
22630 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22640 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
22650 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
22660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
22670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
226c0 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74  ernal SQLiteStat
226d0 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69  ementHandle(SQLi
226e0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
226f0 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73  le cnn, IntPtr s
22700 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tmt)..          
22710 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
22720 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
22730 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22740 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
22750 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
22760 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
22770 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22780 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
22790 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
227a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
227b0 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20  ndle(stmt);..   
227c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
227d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
227e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
227f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22820 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22830 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
22840 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
22850 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
22860 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
22870 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
22880 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
22890 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
228a0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
228b0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
228c0 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
228d0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
228e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
228f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22930 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22940 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
22950 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
22960 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
22970 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22980 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
22990 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
229a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
229b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
229c0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
229d0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
229e0 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
229f0 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
22a00 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
22a10 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
22a20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
22a30 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
22a40 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
22a50 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
22a60 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
22a70 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
22a80 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63  atement(cnn, loc
22a90 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
22aa0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
22ab0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
22ac0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
22ad0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
22ae0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
22b00 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
22b10 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
22b20 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
22b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b40 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
22b50 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
22b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22b70 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
22b80 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
22b90 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
22ba0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
22bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22bd0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
22be0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22bf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
22c00 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
22c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
22c20 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
22c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22c50 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
22c60 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
22c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22c80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ca0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
22cb0 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
22cc0 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
22cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ce0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
22cf0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
22d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
22d20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
22d30 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
22d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22d50 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
22d60 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
22d70 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
22d80 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
22d90 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
22da0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
22db0 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
22dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
22dd0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
22de0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
22df0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
22e00 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
22e10 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
22e20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
22e30 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
22e40 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
22e50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
22e60 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
22e70 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
22e80 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
22e90 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
22ea0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ec0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
22ed0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
22ee0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f00 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
22f10 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
22f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22f30 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
22f40 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
22f50 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
22f60 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
22f80 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
22f90 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
22fa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22fb0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
22fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22fd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22fe0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
22ff0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
23000 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
23010 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
23020 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
23030 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23050 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
23060 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
23070 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23090 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
230a0 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
230b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
230c0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
230d0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
230e0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
230f0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
23100 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
23110 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
23120 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23170 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
23180 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
23190 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
231a0 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
231b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
231c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
231d0 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
231e0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
231f0 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
23200 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
23210 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
23220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23260 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23270 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
23280 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
23290 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
232a0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
232b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
232c0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
232d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
232e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
232f0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
23300 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
23310 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23320 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
23330 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
23340 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
23360 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
23370 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23380 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
233d0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
233e0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
233f0 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
23400 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
23410 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
23420 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23430 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23440 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
23450 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
23460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23470 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
23480 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
23490 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
234a0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
234b0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
234c0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
234d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23510 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23520 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
23530 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
23540 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
23550 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
23560 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
23570 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
23580 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
23590 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
235a0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
235b0 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
235c0 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
235d0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
235e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
235f0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
23600 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
23610 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
23620 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
23630 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
23640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23690 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
236a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
236b0 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
236c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
236d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23700 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23710 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
23720 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
23730 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
23740 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
23750 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
23760 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
23770 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
23780 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
23790 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
237a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
237b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
237c0 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
237d0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
237e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
237f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23800 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23810 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
23820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23830 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
23840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
23850 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
23860 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
23870 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
238c0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
238d0 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
238e0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
238f0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
23900 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
23910 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
23920 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
23930 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
23940 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23950 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
23960 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
23970 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23980 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23990 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
239a0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
239b0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
239c0 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
239d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
239e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
239f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23a40 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
23a50 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
23a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
23a70 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
23a80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
23a90 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
23aa0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
23ab0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
23ac0 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
23ad0 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
23ae0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
23af0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
23b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
23b50 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
23b60 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
23b70 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
23b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
23b90 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
23ba0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23bb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23bd0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
23be0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
23bf0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
23c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c10 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
23c20 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23c40 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
23c50 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
23c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c70 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
23c80 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
23c90 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
23ca0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
23cb0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
23cc0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
23cd0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
23cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d00 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
23d10 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
23d20 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
23d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d40 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
23d50 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
23d60 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
23d80 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
23d90 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
23da0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
23db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
23dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23dd0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
23de0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23df0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
23e00 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
23e10 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
23e20 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
23e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23e50 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
23e60 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
23e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23e80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ea0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
23eb0 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e  hBackup(cnn, han
23ec0 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
23ee0 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
23ef0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
23f00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
23f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23f20 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
23f30 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
23f40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
23f50 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
23f60 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
23f70 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
23f80 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
23f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23fa0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
23fb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23fc0 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
23fd0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
23fe0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
23ff0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
24000 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
24010 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
24020 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
24030 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
24040 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
24050 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
24060 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
24070 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
24080 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
24090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
240b0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
240c0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
240d0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
240e0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
240f0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
24100 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
24110 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
24120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24130 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
24140 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
24150 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
24160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
24170 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
24180 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
24190 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
241a0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
241b0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
241c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
241d0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
241e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
241f0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
24200 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
24210 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
24220 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24230 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
24240 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
24250 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
24260 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
24290 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
242a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
242b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
242c0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
242d0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
242e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
242f0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
24300 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
24310 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24360 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
24370 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
24380 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
24390 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
243a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
243b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
243c0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
243d0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
243e0 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
243f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
24400 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
24410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24450 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24460 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
24470 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
24480 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
24490 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
244a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
244b0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
244c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
244d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
244e0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
244f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
24500 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24510 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24520 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
24530 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
24540 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24550 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24560 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24570 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
245c0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
245d0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
245e0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
245f0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
24600 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
24610 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24620 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
24630 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
24640 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
24650 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24660 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
24670 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
24680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24690 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
246a0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
246b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
246c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24700 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
24710 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c  #region SQLiteBl
24720 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  obHandle Class..
24730 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
24740 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
24750 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
24760 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f  ed SQLite blob o
24770 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
24780 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
24790 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  ss SQLiteBlobHan
247a0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
247b0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
247c0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
247d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
247e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
247f0 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
24800 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
24810 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
24820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24870 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
24880 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
24890 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
248a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
248b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
24900 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
24910 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
24920 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62 48  tPtr(SQLiteBlobH
24930 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20  andle blob)..   
24940 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24950 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20      if (blob != 
24960 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
24970 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
24980 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24990 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
249a0 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e       lock (blob.
249b0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
249c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
249d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
249e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
249f0 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20   blob.handle;.. 
24a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
24a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24a30 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
24a40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
24a50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24aa0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
24ab0 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  al SQLiteBlobHan
24ac0 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
24ad0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
24ae0 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20  IntPtr blob)..  
24af0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
24b00 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
24b10 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
24b20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24b30 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
24b40 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
24b50 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
24b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24b70 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
24b80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24b90 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f     SetHandle(blo
24ba0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
24bb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
24bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
24c20 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ate SQLiteBlobHa
24c30 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
24c40 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
24c50 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
24c60 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
24c70 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
24c80 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
24c90 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
24ca0 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29  gData.blobCount)
24cb0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
24cc0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
24d20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
24d30 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
24d40 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
24d50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24d60 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
24d70 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
24d80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24d90 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
24da0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
24db0 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
24dc0 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
24dd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24de0 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
24df0 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
24e00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24e10 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
24e20 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
24e30 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
24e40 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
24e50 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e  ase.CloseBlob(cn
24e60 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
24e70 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
24e80 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
24e90 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
24ea0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
24ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ed0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
24ee0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
24ef0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
24f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24f10 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
24f20 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
24f30 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
24f50 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c  CloseBlob: {0}",
24f60 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
24f70 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
24fb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24fc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
24fd0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
24fe0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
24ff0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
25000 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25020 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
25030 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
25040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25050 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
25070 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42  QLiteBase.CloseB
25080 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  lob(cnn, handle)
25090 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
250a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
250b0 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
250c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
250d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
250e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
250f0 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
25100 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
25110 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
25120 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
25130 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62  f DebugData.blob
25140 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
25150 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
25160 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25170 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
25180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
25190 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
251a0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
251b0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
251c0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
251d0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
251e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
251f0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
25200 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
25210 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
25220 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
25230 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
25240 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
25250 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
25260 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25280 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
25290 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
252a0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
252b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252c0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
252d0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
252e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
252f0 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
25300 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65  eBlob: {0}, exce
25310 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25330 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
25340 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
25350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25360 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
25370 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
25380 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
253a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
253b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
253c0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
253d0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
253e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
253f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
25400 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
25410 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
25420 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
25430 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25440 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
25450 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
25460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25470 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25480 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
25490 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
254a0 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
254b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
254c0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
254d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
254e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
254f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25530 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
25540 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
25550 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
25560 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
25570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
25580 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
25590 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
255a0 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
255b0 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
255c0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
255d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
255e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25620 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
25630 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
25640 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
25650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
25660 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
25670 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
25680 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
256a0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
256b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
256c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
256d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256e0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
256f0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
25700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25710 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
25720 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
25730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25780 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
25790 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
257a0 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
257b0 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
257c0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
257d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
257e0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
257f0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
25800 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
25810 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25820 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
25830 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
25840 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
25850 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
25860 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
25870 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a     #endregion..}..