System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 88977b336860961d9a02976b3ba39d55b04c2ec5:


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 69 6e 74 20 69  .          int i
8fe0: 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64  ndex = value.Ind
8ff0: 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20  exOf(',');....  
9000: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
9010: 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
9020: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
9030: 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28  value.Substring(
9040: 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  0, index);....  
9050: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
9060: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
9070: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
90d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
90e0: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
90f0: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
9100: 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e  upported environ
9110: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
9120: 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  kens..      /// 
9130: 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63  with their assoc
9140: 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  iated values... 
9150: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9160: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
9170: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
9180: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
9190: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
91a0: 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69  ead from an envi
91b0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
91c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
91d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
91e0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
91f0: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
9200: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
9210: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
9220: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
9230: 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ted..      /// e
9240: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
9250: 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61  ble tokens repla
9260: 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20  ced.  No return 
9270: 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65  value is reserve
9280: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  d..      /// to 
9290: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f  indicate an erro
92a0: 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  r.  This method 
92b0: 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20  cannot fail...  
92c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
92d0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
92e0: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
92f0: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
9300: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
9310: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
9320: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
9330: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
9340: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
9350: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
9360: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
9370: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9380: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
9390: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
93a0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
93b0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
93c0: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
93d0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
93e0: 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20  irectory))..    
93f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
9410: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
9420: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
9440: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70  alue = value.Rep
9450: 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lace(..         
9460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9470: 20 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f   AssemblyDirecto
9480: 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f  ryToken, directo
9490: 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
94a0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
94b0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
94c0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94e0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
94f0: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
9500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9510: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
9520: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
9530: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9540: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
9550: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
9560: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
9570: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9590: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95b0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
95c0: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
95d0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
9600: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
9610: 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76  tCulture, "Nativ
9620: 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20  e library " +.. 
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
9650: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
9660: 74 6f 20 72 65 70 6c 61 63 65 20 61 73 73 65 6d  to replace assem
9670: 62 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  bly " +..       
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9690: 20 20 20 20 20 20 20 22 64 69 72 65 63 74 6f 72         "director
96a0: 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65  y token: {0}", e
96b0: 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
96c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
9700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9720: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
9730: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
9760: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9780: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9790: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
97a0: 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ly = null;....  
97b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
97c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
97d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97e0: 20 20 20 20 61 73 73 65 6d 62 6c 79 20 3d 20 41      assembly = A
97f0: 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
9800: 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
9810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
9820: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
9830: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
9840: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
9850: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
9860: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
9870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
9880: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
9890: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
98a0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
98b0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
98c0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
98f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9910: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
9920: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
9930: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
9960: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
9970: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
9980: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
99b0: 66 61 69 6c 65 64 20 74 6f 20 6f 62 74 61 69 6e  failed to obtain
99c0: 20 65 78 65 63 75 74 69 6e 67 20 22 20 2b 0d 0a   executing " +..
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99e0: 20 20 20 20 20 20 20 20 20 20 22 61 73 73 65 6d            "assem
99f0: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
9a00: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
9a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a30: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
9a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a60: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
9a70: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
9a80: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
9a90: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
9aa0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
9ab0: 20 20 20 20 73 74 72 69 6e 67 20 74 61 72 67 65      string targe
9ac0: 74 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41 62 62  tFramework = Abb
9ad0: 72 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61  reviateTargetFra
9ae0: 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
9af0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
9b00: 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d  semblyTargetFram
9b10: 65 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79 29 29  ework(assembly))
9b20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9b30: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
9b40: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72  sNullOrEmpty(tar
9b50: 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a  getFramework))..
9b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9b80: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
9b90: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bb0: 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
9bc0: 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
9bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9be0: 20 20 20 20 20 54 61 72 67 65 74 46 72 61 6d 65       TargetFrame
9bf0: 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72 67 65  workToken, targe
9c00: 74 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20  tFramework);..  
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c20: 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
9c30: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
9c40: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
9c50: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
9c60: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
9c70: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
9c80: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
9c90: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
9ca0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
9cb0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
9cc0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
9cd0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cf0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
9d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9d20: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
9d30: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
9d40: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
9d50: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
9d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d70: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
9d80: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
9d90: 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72  , "Native librar
9da0: 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
9db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9dc0: 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72       "pre-loader
9dd0: 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61   failed to repla
9de0: 63 65 20 74 61 72 67 65 74 20 22 20 2b 0d 0a 20  ce target " +.. 
9df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72               "fr
9e10: 61 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b  amework token: {
9e20: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
9e30: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
9e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e60: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
9e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ea0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
9eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ec0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
9ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ee0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9ef0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
9f00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
9f10: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
9f20: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
9f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9f90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9fa0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
9fb0: 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20  turns the value 
9fc0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
9fd0: 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20   setting, using 
9fe0: 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f  the XML..      /
9ff0: 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  // configuration
a000: 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65   file and/or the
a010: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
a020: 69 61 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63  iables for the c
a030: 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f  urrent..      //
a040: 2f 20 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72  / process and/or
a050: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73   the current sys
a060: 74 65 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61  tem, when availa
a070: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ble...      /// 
a080: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a090: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
a0a0: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
a0b0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
a0c0: 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20   the setting... 
a0d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
a0e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
a0f0: 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ram name="defaul
a100: 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  t">..      /// T
a110: 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  he value to be r
a120: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73  eturned if the s
a130: 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62  etting has not b
a140: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
a150: 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ly..      /// or
a160: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
a170: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
a180: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
a190: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
a1a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
a1b0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74  alue of the sett
a1c0: 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66  ing -OR- the def
a1d0: 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69  ault value speci
a1e0: 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  fied by..      /
a1f0: 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
a200: 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69  e="default" /> i
a210: 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65  f it has not bee
a220: 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
a230: 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   or..      /// c
a240: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
a250: 6e 65 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ned.  By default
a260: 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73  , all references
a270: 20 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20   to existing..  
a280: 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d      /// environm
a290: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 77 69  ent variables wi
a2a0: 6c 6c 20 62 65 20 65 78 70 61 6e 64 65 64 20 74  ll be expanded t
a2b0: 6f 20 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f  o their correspo
a2c0: 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20  nding values..  
a2d0: 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74      /// within t
a2e0: 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  he value to be r
a2f0: 65 74 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65  eturned unless e
a300: 69 74 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78  ither the "No_Ex
a310: 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20  pand" or..      
a320: 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c  /// "No_Expand_<
a330: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e  paramref name="n
a340: 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e  ame" />" environ
a350: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
a360: 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20   set [to..      
a370: 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a  /// anything]...
a380: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
a390: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
a3a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
a3b0: 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ng GetSettingVal
a3c0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ue(..          s
a3d0: 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f  tring name,    /
a3e0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
a3f0: 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75     string @defau
a400: 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  lt /* in */..   
a410: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
a420: 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
a430: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a440: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
a450: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
a460: 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
a470: 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74  al "No_SQLiteGet
a480: 53 65 74 74 69 6e 67 56 61 6c 75 65 22 20 65 6e  SettingValue" en
a490: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
a4a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61       //       va
a4b0: 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74  riable is set [t
a4c0: 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69  o anything], thi
a4d0: 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c  s method will al
a4e0: 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ways..          
a4f0: 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  //       return 
a500: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
a510: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
a520: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
a530: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
a540: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
a550: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
a560: 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 47       "No_SQLiteG
a570: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 29  etSettingValue")
a580: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
a590: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a5a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
a5b0: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  fault;..        
a5c0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
a5d0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
a620: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
a630: 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  name == null).. 
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a650: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
a660: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72  ....          #r
a6c0: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
a6d0: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
a6e0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
a6f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
a700: 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74  TE: We are about
a710: 20 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69   to read a setti
a720: 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  ng value from th
a730: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  e environment.. 
a740: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a750: 20 20 6f 72 20 70 6f 73 73 69 62 6c 79 20 66 72    or possibly fr
a760: 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  om the XML confi
a770: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63  guration file; c
a780: 72 65 61 74 65 20 6f 72 0d 0a 20 20 20 20 20 20  reate or..      
a790: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 63      //       inc
a7a0: 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f  rement the appro
a7b0: 70 72 69 61 74 65 20 73 74 61 74 69 73 74 69 63  priate statistic
a7c0: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
a7d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44   //..          D
a7e0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
a7f0: 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75  ntSettingReadCou
a800: 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65 29 3b  nt(name, false);
a810: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
a820: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 62  /....          b
a890: 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75  ool expand = tru
a8a0: 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20 45 6e  e; /* SHARED: En
a8b0: 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20  vironment -AND- 
a8c0: 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e  XML config file.
a8d0: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
a8e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a920: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
a930: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a940: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
a950: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
a960: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
a970: 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
a980: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
a990: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f  mentVariable("No
a9a0: 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c  _Expand") != nul
a9b0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
a9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
a9d0: 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  xpand = false;..
a9e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a9f0: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
aa00: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
aa10: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
aa20: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
aa30: 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
aa40: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
aa50: 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  t(CultureInfo.In
aa60: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
aa70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa80: 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30     "No_Expand_{0
aa90: 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75  }", name)) != nu
aaa0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
aab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aac0: 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d  expand = false;.
aad0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
aae0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
aaf0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65  = Environment.Ge
ab00: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
ab10: 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20  able(name);.... 
ab20: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
ab30: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
ab40: 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
ab50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ab60: 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
ab70: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
ab80: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
ab90: 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
aba0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
abb0: 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
abd0: 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76  lue = ReplaceEnv
abe0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
abf0: 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a  Tokens(value);..
ac00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
ac10: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
ac20: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
ac30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ac40: 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  n value;....    
ac50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ac60: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
ac70: 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d  the "No_SQLiteXm
ac80: 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20 65 6e 76  lConfigFile" env
ac90: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
aca0: 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20  e is..          
acb0: 2f 2f 20 20 20 20 20 20 20 73 65 74 20 5b 74 6f  //       set [to
acc0: 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73   anything], this
acd0: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56   method will NEV
ace0: 45 52 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ER read from the
acf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
ad00: 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75       XML configu
ad10: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
ad20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ad30: 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
ad40: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
ad50: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
ad70: 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66  No_SQLiteXmlConf
ad80: 69 67 46 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c  igFile") != null
ad90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
adb0: 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
adc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
add0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
ade0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
adf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
ae30: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
ae40: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
ae50: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
ae60: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ae70: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
ae80: 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
ae90: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
aea0: 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  rom the XML..   
aeb0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
aec0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
aed0: 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 20 69 6e  le; create or in
aee0: 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72  crement the appr
aef0: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20  opriate..       
af00: 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 61 74     //       stat
af10: 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20  istic now...    
af20: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
af30: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
af40: 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65  crementSettingRe
af50: 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 74 72  adCount(name, tr
af60: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
af70: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
af80: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
af90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afd0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
afe0: 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 65 74     return GetSet
aff0: 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
b000: 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
b010: 20 20 20 20 20 20 20 20 20 20 47 65 74 58 6d 6c            GetXml
b020: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29  ConfigFileName()
b030: 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  , name, @default
b040: 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20 20 20  , expand);..    
b050: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
b060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0a0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
b0b0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b0c0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
b0d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
b0e0: 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69  tring ListToStri
b0f0: 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ng(IList<string>
b100: 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d   list)..      {.
b110: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c  .          if (l
b120: 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ist == null)..  
b130: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b140: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
b150: 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c        StringBuil
b160: 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  der result = new
b170: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
b180: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
b190: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 65  oreach (string e
b1a0: 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d  lement in list).
b1b0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
b1c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b1d0: 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29  element == null)
b1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b1f0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
b200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
b210: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
b220: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
b230: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
b240: 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a  Append(' ');....
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b260: 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d  sult.Append(elem
b270: 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ent);..         
b280: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
b290: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f  return result.To
b2a0: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
b2b0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b300: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
b310: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
b320: 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74  t CheckForArchit
b330: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
b340: 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rms(..          
b350: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
b360: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
b370: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61   List<string> ma
b380: 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20  tches..         
b390: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
b3a0: 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c         int resul
b3b0: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
b3c0: 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73 20      if (matches 
b3d0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
b3e0: 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 20          matches 
b3f0: 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e  = new List<strin
b400: 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  g>();....       
b410: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
b420: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
b430: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b440: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
b450: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
b460: 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20  irectory) &&..  
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b480: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
b490: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
b4a0: 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
b4b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
b4d0: 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50  reach (KeyValueP
b4e0: 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  air<string, stri
b4f0: 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20  ng> pair..      
b500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b510: 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73        in process
b520: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
b530: 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20  atforms)..      
b540: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b560: 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
b570: 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
b580: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
b590: 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29 29  tory, pair.Key))
b5a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b5b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5d0: 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64        matches.Ad
b5e0: 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20  d(pair.Key);..  
b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b600: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b          result++
b610: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b620: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b640: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
b650: 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a   = pair.Value;..
b660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b670: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
b680: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6a0: 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
b6b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b6c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72           if (Dir
b6d0: 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61  ectory.Exists(Ma
b6e0: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
b6f0: 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75 65 29  irectory, value)
b700: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
b710: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b730: 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41         matches.A
b740: 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  dd(value);..    
b750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b760: 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d        result++;.
b770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b780: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b790: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
b7b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
b7c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b7d0: 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  result;..      }
b7e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b830: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
b840: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
b850: 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f   CheckAssemblyCo
b860: 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20 20 20  deBase(..       
b870: 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
b880: 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  mbly,..         
b890: 20 72 65 66 20 73 74 72 69 6e 67 20 66 69 6c 65   ref string file
b8a0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
b8b0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
b8c0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
b8d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b8e0: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
b8f0: 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
b900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b910: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
b920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
b930: 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20 3d 20  ring codeBase = 
b940: 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73  assembly.CodeBas
b950: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
b960: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
b970: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64  sNullOrEmpty(cod
b980: 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eBase))..       
b990: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b9a0: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
b9b0: 20 20 20 20 20 20 20 20 20 20 55 72 69 20 75 72            Uri ur
b9c0: 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f 64 65  i = new Uri(code
b9d0: 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Base);..        
b9e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63        string loc
b9f0: 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69  alFileName = uri
ba00: 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20  .LocalPath;.... 
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ba20: 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f  (!File.Exists(lo
ba30: 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  calFileName)).. 
ba40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba50: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
ba60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba70: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
ba80: 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
ba90: 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20  toryName(..     
baa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
bab0: 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20  alFileName); /* 
bac0: 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
bad0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
bae0: 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
baf0: 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e  me = MaybeCombin
bb00: 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
bb10: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
bb20: 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
bb30: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
bb40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
bb50: 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e  le.Exists(xmlCon
bb60: 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  figFileName)).. 
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
bb80: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
bb90: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
bba0: 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
bbb0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
bbe0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
bbf0: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
bc00: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
bc10: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
bc40: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc60: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
bc70: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
bc80: 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e  er found XML con
bc90: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
bca0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
bcc0: 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f  via code base fo
bcd0: 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
bce0: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
bcf0: 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20  \"{0}\"",..     
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69       xmlConfigFi
bd20: 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72  leName)); /* thr
bd30: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
bd40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
bd60: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
bd70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
bda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdb0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdd0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
bde0: 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
be00: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
be10: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
be20: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73               Lis
be30: 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
be40: 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  s = null;....   
be50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 43             if (C
be60: 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74  heckForArchitect
be70: 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73  uresAndPlatforms
be80: 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20  (directory, ref 
be90: 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d 0a 20  matches) > 0).. 
bea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
beb0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
bec0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
bed0: 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
bee0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
bf10: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
bf20: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
bf30: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
bf40: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
bf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf60: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
bf70: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf90: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
bfa0: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
bfb0: 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20  er found native 
bfc0: 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20  sub-directories 
bfd0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
bfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
bff0: 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f  via code base fo
c000: 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
c010: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
c020: 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20  \"{0}\"",..     
c030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c040: 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72 69 6e       ListToStrin
c050: 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20 2f 2a  g(matches))); /*
c060: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c090: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
c0a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0c0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
c0d0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
c0e0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
c0f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c100: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
c110: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a  localFileName;..
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c130: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c150: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c160: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
c170: 20 20 20 20 20 20 20 20 20 20 7d 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 63 61 74 63  ..          catc
c1b0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
c1c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
c1d0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
c1e0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
c1f0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
c200: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
c210: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
c220: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
c230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c240: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c250: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
c260: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
c270: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
c280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c290: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
c2a0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
c2b0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
c2c0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
c2d0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
c2e0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
c2f0: 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20  check code base 
c300: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
c310: 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20             "for 
c320: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
c330: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30  ing assembly: {0
c340: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
c350: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
c360: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
c370: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
c380: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c3a0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c3c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
c3d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
c3e0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
c3f0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
c400: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
c410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c450: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
c460: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c470: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
c480: 65 74 75 72 6e 73 20 74 68 65 20 64 69 72 65 63  eturns the direc
c490: 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73  tory for the ass
c4a0: 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
c4b0: 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  being..      ///
c4c0: 20 65 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20   executed...    
c4d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c4e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
c4f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
c500: 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 66   The directory f
c510: 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  or the assembly 
c520: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
c530: 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75  executed -OR- nu
c540: 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll if..      ///
c550: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
c560: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
c570: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
c580: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
c590: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
c5a0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
c5b0: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
c5c0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
c5d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c5e0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
c5f0: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
c600: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
c610: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a  gAssembly();....
c620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c630: 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75   (assembly == nu
c640: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
c650: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
c660: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
c670: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
c680: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
c690: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
c6a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
c6c0: 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62  emblyName assemb
c6d0: 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  lyName = assembl
c6e0: 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a  y.GetName();....
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c700: 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d   (assemblyName =
c710: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c720: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c730: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
c740: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
c750: 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  e = assemblyName
c760: 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73  .CodeBase;..#els
c770: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
c780: 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d   if (!CheckAssem
c790: 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65  blyCodeBase(asse
c7a0: 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61  mbly, ref fileNa
c7b0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
c7c0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
c7d0: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
c7e0: 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
c7f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
c800: 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
c810: 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
c820: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
c830: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
c840: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
c850: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
c860: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
c870: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c  irectoryName(fil
c880: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
c890: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
c8a0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
c8b0: 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20  y(directory)).. 
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
c8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
c8f0: 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
c900: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 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 63 61  ED..          ca
c940: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
c950: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
c960: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
c970: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
c980: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
c990: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
c9a0: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
c9b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
c9c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
c9d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c9e0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
c9f0: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
ca00: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
ca10: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
ca20: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
ca30: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
ca40: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
ca60: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
ca70: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
ca80: 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72 79 20  o get directory 
ca90: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
caa0: 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20             "for 
cab0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
cac0: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30  ing assembly: {0
cad0: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
cae0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
caf0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
cb00: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
cb10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
cb30: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
cb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
cb50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
cb60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
cb70: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
cb80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
cb90: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
cba0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
cbf0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74       #region Opt
cc00: 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c  ional Native SQL
cc10: 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d  ite Library Pre-
cc20: 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20  Loading Code..  
cc30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
cc40: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65   NOTE: If we are
cc50: 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65   looking for the
cc60: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
cc70: 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64   DLL ("sqlite3.d
cc80: 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20  ll"),..      // 
cc90: 20 20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f        the intero
cca0: 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49  p DLL ("SQLite.I
ccb0: 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72  nterop.dll"), or
ccc0: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
ccd0: 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  on the..      //
cce0: 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70         .NET Comp
ccf0: 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77  act Framework, w
cd00: 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65  e should include
cd10: 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79   this code (only
cd20: 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   if the..      /
cd30: 2f 20 20 20 20 20 20 20 66 65 61 74 75 72 65 20  /       feature 
cd40: 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65  has actually bee
cd50: 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69  n enabled).  Thi
cd60: 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20  s code would be 
cd70: 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f  totally..      /
cd80: 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e  /       redundan
cd90: 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65  t if this module
cda0: 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65   has been bundle
cdb0: 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64  d into the mixed
cdc0: 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20  -mode..      // 
cdd0: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d        assembly..
cde0: 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53  .      //..#if S
cdf0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c  QLITE_STANDARD |
ce00: 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c  | USE_INTEROP_DL
ce10: 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  L || PLATFORM_CO
ce20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ce30: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
ce40: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20    // NOTE: Only 
ce50: 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e  compile in the n
ce60: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
ce70: 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74  e-load code if t
ce80: 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20  he feature..    
ce90: 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62    //       has b
cea0: 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20  een enabled for 
ceb0: 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20  this build...   
cec0: 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f     //..#if PRELO
ced0: 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52  AD_NATIVE_LIBRAR
cee0: 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  Y..      /// <su
cef0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cf00: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
cf10: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
cf20: 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  riable containin
cf30: 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d  g the processor.
cf40: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69  .      /// archi
cf50: 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
cf60: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d  urrent process..
cf70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
cf80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
cf90: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
cfa0: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43  only string PROC
cfb0: 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
cfc0: 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  RE =..          
cfd0: 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49  "PROCESSOR_ARCHI
cfe0: 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20  TECTURE";....   
cff0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d040: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
d050: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
d060: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d070: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
d080: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c  ative module fil
d090: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
d0a0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
d0b0: 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20  rary or null... 
d0c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
d0d0: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
d0e0: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
d0f0: 67 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  g _SQLiteNativeM
d100: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
d110: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  null;....      /
d120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d160: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
d170: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d180: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
d190: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
d1a0: 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
d1b0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
d1c0: 6f 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20  or the value..  
d1d0: 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a      /// IntPtr.Z
d1e0: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
d1f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d200: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
d210: 20 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e   IntPtr _SQLiteN
d220: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
d230: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
d240: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
d250: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
d260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
d2b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d2c0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
d2d0: 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e   the base file n
d2e0: 61 6d 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79  ame (without any
d2f0: 20 64 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72   directory infor
d300: 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f  mation)..      /
d310: 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  // for the nativ
d320: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
d330: 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65   to be pre-loade
d340: 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e  d by this class.
d350: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
d360: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d370: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
d380: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
d390: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
d3a0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
d3b0: 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72  library to be pr
d3c0: 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20  e-loaded by..   
d3d0: 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73     /// this clas
d3e0: 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
d3f0: 74 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20  ts value cannot 
d400: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
d410: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
d420: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
d430: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
d440: 6e 67 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72  ng GetNativeLibr
d450: 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
d460: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
d470: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
d480: 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53  eNameOnly = GetS
d490: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
d4a0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
d4b0: 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61  LoadSQLite_Libra
d4c0: 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c  ryFileNameOnly",
d4d0: 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
d4e0: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
d4f0: 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eOnly != null)..
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d510: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  turn fileNameOnl
d520: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
d530: 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c  return SQLITE_DL
d540: 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d  L; /* COMPAT */.
d550: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
d560: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
d570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
d5b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d5c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72  ..      /// Sear
d5d0: 63 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74  ches for the nat
d5e0: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
d5f0: 72 79 20 69 6e 20 74 68 65 20 64 69 72 65 63 74  ry in the direct
d600: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ory containing..
d610: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73        /// the as
d620: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
d630: 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20   being executed 
d640: 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62  as well as the b
d650: 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20  ase directory.. 
d660: 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65       /// for the
d670: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
d680: 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20  tion domain...  
d690: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d6a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
d6b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44  aram name="baseD
d6c0: 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20  irectory">..    
d6d0: 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
d6e0: 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
d6f0: 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
d700: 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20  ied to refer to 
d710: 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
d720: 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f  /// directory co
d730: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74  ntaining the nat
d740: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
d750: 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
d760: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
d770: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d780: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
d790: 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
d7a0: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
d7b0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
d7c0: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
d7d0: 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65   to refer to the
d7e0: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   name..      ///
d7f0: 20 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74   of the immediat
d800: 65 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65  e directory (i.e
d810: 2e 20 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f  . the offset fro
d820: 6d 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  m the base direc
d830: 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tory)..      ///
d840: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
d850: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
d860: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
d870: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d880: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
d890: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
d8a0: 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69 66  ero (success) if
d8b0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
d8c0: 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 66  te library was f
d8d0: 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  ound; otherwise,
d8e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  ..      /// zero
d8f0: 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20   (failure)...   
d900: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d910: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
d920: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61   static bool Sea
d930: 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28  rchForDirectory(
d940: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
d950: 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
d960: 74 6f 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20  tory,        /* 
d970: 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
d980: 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f    ref string pro
d990: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
d9a0: 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  re /* out */..  
d9b0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
d9c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
d9d0: 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
d9e0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
d9f0: 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
da00: 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69  te_NoSearchForDi
da10: 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20  rectory", null) 
da20: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
da30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
da40: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
da50: 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a  e; /* DISABLED *
da60: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  /..          }..
da70: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
da80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
da90: 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65  E: Determine the
daa0: 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
dab0: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
dac0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a  QLite library...
dad0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
dae0: 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f     If this is no
daf0: 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20  t known by this 
db00: 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74  class, we cannot
db10: 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20   continue...    
db20: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
db30: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
db40: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74  ameOnly = GetNat
db50: 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  iveLibraryFileNa
db60: 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  meOnly();....   
db70: 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e         if (fileN
db80: 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ameOnly == null)
db90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dba0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
dbb0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
dbc0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
dbd0: 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74  : Build the list
dbe0: 20 6f 66 20 62 61 73 65 20 64 69 72 65 63 74 6f   of base directo
dbf0: 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73  ries and process
dc00: 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20  or/platform..   
dc10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
dc20: 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69  names.  These li
dc30: 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64  sts will be used
dc40: 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20   to help locate 
dc50: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
dc60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
dc70: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
dc80: 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61  ry (or interop a
dc90: 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d  ssembly) to pre-
dca0: 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20  load into..     
dcb0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
dcc0: 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  is process...   
dcd0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dce0: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69       string[] di
dcf0: 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
dd10: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
dd20: 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46  y(),..#if !PLATF
dd30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
dd40: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
dd50: 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75      AppDomain.Cu
dd60: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
dd70: 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64  Directory,..#end
dd80: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b  if..          };
dd90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  ....          st
dda0: 72 69 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74  ring[] subDirect
ddb0: 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20  ories = {..     
ddc0: 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f 63           GetProc
ddd0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
dde0: 65 28 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d  e(), GetPlatform
ddf0: 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20  Name(null)..    
de00: 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20        };....    
de10: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
de20: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
de30: 69 6e 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d  in directories).
de40: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
de50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
de60: 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  directory == nul
de70: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
de80: 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
de90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dea0: 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
deb0: 20 73 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e   subDirectory in
dec0: 20 73 75 62 44 69 72 65 63 74 6f 72 69 65 73 29   subDirectories)
ded0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dee0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
def0: 20 20 20 20 20 69 66 20 28 73 75 62 44 69 72 65       if (subDire
df00: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df20: 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
df30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
df40: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
df50: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
df60: 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d  ileName(MaybeCom
df70: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df90: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
dfa0: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62  h(directory, sub
dfb0: 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20  Directory),..   
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfd0: 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29     fileNameOnly)
dfe0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
dff0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e010: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51   NOTE: If the SQ
e020: 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78  Lite DLL file ex
e030: 69 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63  ists, return suc
e040: 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  cess...         
e050: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
e060: 20 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72    Prior to retur
e070: 6e 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61  ning, set the ba
e080: 73 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  se directory and
e090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e0a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f      //       pro
e0b0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
e0c0: 75 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74  ure to reflect t
e0d0: 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20  he location..   
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e0f0: 2f 20 20 20 20 20 20 20 77 68 65 72 65 20 69 74  /       where it
e100: 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20   was found...   
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e120: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
e130: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
e140: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
e150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e160: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
e170: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
e180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
e1e0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
e1f0: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
e200: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e220: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
e230: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
e240: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e260: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
e270: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
e280: 6e 64 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22  nd native file "
e290: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2b0: 20 20 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c    "name \"{0}\",
e2c0: 20 72 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63   returning direc
e2d0: 74 6f 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64  tory \"{1}\" and
e2e0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
e2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e300: 20 20 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f      "sub-directo
e310: 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20  ry \"{2}\"...", 
e320: 66 69 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74  fileName, direct
e330: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
e340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e350: 20 20 20 20 73 75 62 44 69 72 65 63 74 6f 72 79      subDirectory
e360: 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
e370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e380: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
e390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3a0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
e3e0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e400: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
e410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e420: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
e430: 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20   = directory;.. 
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e450: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
e460: 63 68 69 74 65 63 74 75 72 65 20 3d 20 73 75 62  chitecture = sub
e470: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e490: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f    return true; /
e4a0: 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20  * FOUND */..    
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e4c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
e4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
e4e0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
e4f0: 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20  n false; /* NOT 
e500: 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
e510: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
e520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e560: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
e570: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e580: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
e590: 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73   returns the bas
e5a0: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
e5b0: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
e5c0: 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  cation..      //
e5d0: 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  / domain...     
e5e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e5f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
e600: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
e610: 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
e620: 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ry for the curre
e630: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
e640: 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20  omain -OR- null 
e650: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
e660: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
e670: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
e680: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
e690: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
e6a0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73  ic string GetBas
e6b0: 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  eDirectory()..  
e6c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e6d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
e6e0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
e6f0: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
e700: 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  seDirectory" env
e710: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
e720: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
e730: 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73        is set, us
e740: 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f  e it verbatim fo
e750: 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  r the base direc
e760: 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
e770: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
e780: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
e790: 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  = GetSettingValu
e7a0: 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e("PreLoadSQLite
e7b0: 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c  _BaseDirectory",
e7c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e7d0: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
e7e0: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
e7f0: 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
e800: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e810: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23   directory;....#
e820: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e830: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e840: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
e850: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e860: 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
e870: 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
e880: 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69  yDirectory" envi
e890: 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
e8a0: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
e8b0: 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20  able is set (to 
e8c0: 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20  anything), then 
e8d0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
e8e0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
e8f0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
e900: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
e910: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
e920: 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20  ing assembly..  
e930: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e940: 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61   (i.e. System.Da
e950: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
e960: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
e970: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ation..         
e980: 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e   //       domain
e990: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e   base directory.
e9a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e9b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65            if (Ge
e9c0: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9e0: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
e9f0: 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65  _UseAssemblyDire
ea00: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
ea10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ea20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ea30: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
ea40: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
ea50: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
ea60: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
ea70: 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea90: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
eaa0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ry;..          }
eab0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
eac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
ead0: 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20  OTE: Otherwise, 
eae0: 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e  fallback on usin
eaf0: 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  g the base direc
eb00: 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20  tory of the..   
eb10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
eb20: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
eb30: 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  ion domain...   
eb40: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
eb50: 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44       return AppD
eb60: 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d  omain.CurrentDom
eb70: 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72  ain.BaseDirector
eb80: 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  y;..#else..     
eb90: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
eba0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
ebb0: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
ebc0: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69 72  on using the dir
ebd0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
ebe0: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  g..          // 
ebf0: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
ec00: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
ec10: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20  sembly...       
ec20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ec30: 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d   return GetAssem
ec40: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
ec50: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
ec60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ecb0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
ecc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ecd0: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
ece0: 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  f the dynamic li
ecf0: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
ed00: 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20  name requires a 
ed10: 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f  suffix..      //
ed20: 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66  / and adds it if
ed30: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
ed40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ed50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
ed60: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
ed70: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
ed80: 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e  The original dyn
ed90: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
eda0: 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69  y file name to i
edb0: 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  nspect...      /
edc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
edd0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
ede0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
edf0: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
ee00: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20  rary file name, 
ee10: 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65  possibly modifie
ee20: 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d  d to include an.
ee30: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e  .      /// exten
ee40: 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sion...      ///
ee50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
ee60: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
ee70: 63 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c  c string FixUpDl
ee80: 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20  lFileName(..    
ee90: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
eea0: 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  eName /* in */..
eeb0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
eec0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
eed0: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
eee0: 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
eef0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
ef00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ef10: 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
ef20: 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d  ds.IsWindows()).
ef30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
ef40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef50: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
ef60: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
ef70: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
ef80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef90: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
efa0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
efb0: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
efc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
efe0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
eff0: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
f000: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f020: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
f030: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
f040: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
f050: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
f060: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
f0c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f0d0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
f0e0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
f0f0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
f100: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
f110: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
f120: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
f130: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f140: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
f150: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
f160: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
f170: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
f180: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
f190: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
f1a0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
f1b0: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
f1c0: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
f1d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
f1e0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f1f0: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
f200: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
f210: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
f220: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f230: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
f240: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
f250: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
f260: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
f270: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
f280: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
f290: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
f2a0: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
f2b0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
f2c0: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
f2d0: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
f2e0: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
f2f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
f300: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
f310: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
f320: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
f330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f340: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
f350: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
f360: 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  ture", null);...
f370: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
f380: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
f390: 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ture != null).. 
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f3b0: 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  urn processorArc
f3c0: 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20  hitecture;....  
f3d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f3e0: 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a        // BUGBUG:
f3f0: 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79   Will this alway
f400: 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a  s be reliable?..
f410: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f420: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
f430: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
f440: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
f450: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
f460: 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a  ECTURE, null);..
f470: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
f4d0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f4e0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
f4f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
f500: 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20  HACK: Check for 
f510: 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20  an "impossible" 
f520: 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74  situation.  If t
f530: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d  he pointer size.
f540: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f550: 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20      is 32-bits, 
f560: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
f570: 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f  chitecture canno
f580: 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20  t be "AMD64"... 
f590: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
f5a0: 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20    In that case, 
f5b0: 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65  we are almost ce
f5c0: 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20  rtainly hitting 
f5d0: 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20  a bug in the..  
f5e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
f5f0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
f600: 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20  m and/or Visual 
f610: 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75 73  Studio that caus
f620: 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  es the..        
f630: 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45    //       PROCE
f640: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
f650: 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  E environment va
f660: 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69  riable to contai
f670: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
f680: 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20   //       wrong 
f690: 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69  value in some ci
f6a0: 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c  rcumstances.  Pl
f6b0: 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 69  ease refer to ti
f6c0: 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  cket..          
f6d0: 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38 36  //       [9ac986
f6e0: 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65  2611] for furthe
f6f0: 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  r information...
f700: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f710: 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e 74          if ((Int
f720: 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65  Ptr.Size == size
f730: 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20  of(int)) &&..   
f740: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
f750: 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73  g.Equals(process
f760: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
f770: 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20  "AMD64",..      
f780: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
f790: 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
f7a0: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
f7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
f7c0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
f7d0: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
f7e0: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
f7f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f800: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
f810: 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20  When tracing is 
f820: 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68  enabled, save th
f830: 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74  e originally det
f840: 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20  ected..         
f850: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
f860: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
f870: 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e  ture before chan
f880: 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20  ging it...      
f890: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f8a0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
f8b0: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
f8c0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70 72  rchitecture = pr
f8d0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
f8e0: 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ure;..#endif....
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
f900: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f910: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77  // NOTE: We know
f920: 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20   that operating 
f930: 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74  systems that ret
f940: 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a  urn "AMD64" as..
f950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
f960: 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63 65         the proce
f970: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
f980: 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61  e are actually a
f990: 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20   superset of..  
f9a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
f9b0: 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20 70       the "x86" p
f9c0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
f9d0: 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65  cture; therefore
f9e0: 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20  , return..      
f9f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
fa00: 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65 20   "x86" when the 
fa10: 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20  pointer size is 
fa20: 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20  32-bits...      
fa30: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
fa40: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
fa50: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
fa60: 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20  = "x86";....#if 
fa70: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
fa80: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
fa90: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
faa0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
fab0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fac0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fae0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68  // NOTE: Show th
faf0: 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69 72  at we hit a fair
fb00: 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61  ly unusual situa
fb10: 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20  tion (i.e...    
fb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
fb30: 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e         the "wron
fb40: 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  g" processor arc
fb50: 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64 65  hitecture was de
fb60: 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  tected)...      
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb90: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
fba0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
fbb0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbd0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
fbe0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
fbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc00: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
fc10: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
fc20: 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d  er detected {0}-
fc30: 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d  bit pointer " +.
fc40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc50: 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69 74         "size wit
fc60: 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  h processor arch
fc70: 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22  itecture \"{1}\"
fc80: 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20  , using " +..   
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fca0: 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72     "processor ar
fcb0: 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d  chitecture \"{2}
fcc0: 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d  \" instead...",.
fcd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fce0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69         IntPtr.Si
fcf0: 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a  ze * 8 /* bits *
fd00: 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f  /, savedProcesso
fd10: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a  rArchitecture,..
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd30: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
fd40: 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f  rchitecture)); /
fd50: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
fd60: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fd70: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
fd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fd90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fda0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
fdb0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
fdc0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
fdd0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
fde0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
fdf0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
fe00: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
fe10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
fe20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
fe30: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
fe40: 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
fe50: 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
fe60: 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ork, attempt to 
fe70: 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  use the native..
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
fe90: 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50 49         Win32 API
fea0: 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50   function (via P
feb0: 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61  /Invoke) that ca
fec0: 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20  n provide us..  
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
fee0: 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70 72       with the pr
fef0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
ff00: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
ff10: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ff20: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ff30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ff50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ff60: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
ff70: 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20  e output of the 
ff80: 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75  GetSystemInfo fu
ff90: 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a  nction will be..
ffa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffb0: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65    //       place
ffc0: 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68  d here.  Only th
ffd0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
ffe0: 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a  itecture field..
fff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10000 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73    //       is us
10010 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f  ed by this metho
10020 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
10030 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10040 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
10050 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57  feNativeMethodsW
10060 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f  in32.SYSTEM_INFO
10070 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a   systemInfo;....
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10090 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
100a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
100b0 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74 65   Query the syste
100c0 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69  m information vi
100d0 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73  a P/Invoke, thus
100e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
100f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c      //       fil
10100 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75  ling the structu
10110 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
10120 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10130 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
10140 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10150 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49  Win32.GetSystemI
10160 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e  nfo(out systemIn
10170 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  fo);....        
10180 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101a0 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20  // NOTE: Return 
101b0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
101c0 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75 65  chitecture value
101d0 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   as a string... 
101e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
10200 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
10210 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a  Architecture =..
10220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10230 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f        systemInfo
10240 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  .wProcessorArchi
10250 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67  tecture.ToString
10260 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
10270 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10280 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
10290 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
102a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
102b0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
102c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
102d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
102e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
102f0 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66   // NOTE: Upon f
10300 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61  ailure, return a
10310 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20  n empty string. 
10320 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65   This will preve
10330 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
10340 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
10350 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72  alling method fr
10360 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74  om considering t
10370 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20  his method call 
10380 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
10390 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75   //       "failu
103a0 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  re"...          
103b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
103c0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
103d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
103e0 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
103f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
10400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
10410 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
10460 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f   return processo
10470 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
10480 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10490 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
104a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
104e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
104f0 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e  .      /// Given
10500 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
10510 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74  rchitecture, ret
10520 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  urns the name of
10530 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a   the platform...
10540 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10550 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
10560 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
10570 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
10580 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
10590 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
105a0 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65  chitecture to be
105b0 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61   translated to a
105c0 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
105d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
105e0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
105f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
10600 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d  /// The platform
10610 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70   name for the sp
10620 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
10630 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d  r architecture -
10640 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  OR- null..      
10650 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  /// if it cannot
10660 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
10670 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
10680 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
10690 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
106a0 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ng GetPlatformNa
106b0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me(..          s
106c0 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
106d0 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69  rchitecture /* i
106e0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
106f0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
10700 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
10710 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
10720 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
10730 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
10740 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
10750 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
10760 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
10770 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
10780 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
10790 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
107a0 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
107b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
107c0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
107d0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
107e0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
107f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10800 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
10810 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
10820 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
10830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10840 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
10850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10860 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
10870 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
10880 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
10890 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
108a0 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
108b0 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
108c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
108d0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
108e0 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
108f0 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
10900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10910 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
10920 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
10930 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10940 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
10950 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
10960 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
10970 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
10980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
109d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
109e0 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
109f0 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
10a00 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
10a10 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
10a20 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
10a30 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
10a40 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
10a50 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
10a60 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10a70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10a80 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
10a90 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
10aa0 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63  / The base direc
10ab0 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c  tory to use, nul
10ac0 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
10ad0 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
10ae0 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y of..      /// 
10af0 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
10b00 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e  ication domain).
10b10 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79    This directory
10b20 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
10b30 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
10b40 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
10b50 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73  cture specific s
10b60 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d  ub-directories..
10b70 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
10b80 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
10b90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
10ba0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
10bb0 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
10bc0 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f  he requested pro
10bd0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
10be0 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  ure, null for de
10bf0 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20  fault (the..    
10c00 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
10c10 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
10c20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
10c30 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c  ess).  This call
10c40 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  er should..     
10c50 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61   /// almost alwa
10c60 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20  ys specify null 
10c70 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74  for this paramet
10c80 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  er...      /// <
10c90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
10ca0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
10cb0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
10cc0 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
10cd0 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20  / The candidate 
10ce0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69  native module fi
10cf0 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20  le name to load 
10d00 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68  will be stored h
10d10 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ere,..      /// 
10d20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
10d30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
10d40 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
10d50 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
10d60 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a  ModuleHandle">..
10d70 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
10d80 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
10d90 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62  le as returned b
10da0 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69  y LoadLibrary wi
10db0 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20  ll be stored..  
10dc0 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66      /// here, if
10dd0 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69   necessary.  Thi
10de0 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
10df0 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74  IntPtr.Zero if t
10e00 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20  he call to..    
10e10 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72    /// LoadLibrar
10e20 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  y fails...      
10e30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10e40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
10e50 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
10e60 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74  -zero if the nat
10e70 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c  ive module was l
10e80 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c  oaded successful
10e90 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  ly; otherwise,..
10ea0 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d        /// zero..
10eb0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
10ec0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
10ed0 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
10ee0 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c   PreLoadSQLiteDl
10ef0 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  l(..          st
10f00 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
10f10 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f  ry,            /
10f20 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
10f30 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
10f40 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
10f50 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
10f60 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
10f70 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  ng nativeModuleF
10f80 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20  ileName, /* out 
10f90 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  */..          re
10fa0 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d  f IntPtr nativeM
10fb0 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f  oduleHandle    /
10fc0 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
10fd0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
10fe0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10ff0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
11000 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
11010 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  d base directory
11020 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
11030 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20  e default..     
11040 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
11050 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61  .e. attempt to a
11060 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74  utomatically det
11070 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20  ect it)...      
11080 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
11090 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
110a0 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
110b0 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
110c0 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42  Directory = GetB
110d0 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  aseDirectory();.
110e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
110f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
11100 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
11110 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61   to query the ba
11120 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74  se directory, st
11130 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
11140 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11150 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
11160 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
11170 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11180 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
11190 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
111a0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74      // NOTE: Det
111b0 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20  ermine the base 
111c0 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
111d0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
111e0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
111f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20      //       If 
11200 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77  this is not know
11210 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c  n by this class,
11220 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69   we cannot conti
11230 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nue...          
11240 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
11250 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ring fileNameOnl
11260 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62  y = GetNativeLib
11270 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
11280 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
11290 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
112a0 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
112b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
112c0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
112d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
112e0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
112f0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
11300 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20   library exists 
11310 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65  in the base dire
11320 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  ctory..         
11330 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66   //       itself
11340 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
11350 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11360 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
11370 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
11380 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d  ileName(MaybeCom
11390 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69 72  binePath(baseDir
113a0 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
113b0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f         fileNameO
113c0 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly));....      
113d0 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
113e0 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11400 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
11410 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11420 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
11430 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
11440 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
11450 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c  tecture is null,
11460 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
11470 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66      //       def
11480 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  ault...         
11490 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
114a0 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
114b0 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
114c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
114d0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
114e0 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
114f0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
11500 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
11510 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
11520 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
11530 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74  ailed to query t
11540 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
11550 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20  hitecture, stop 
11560 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
11570 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
11580 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
11590 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
115a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
115b0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
115c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
115d0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
115e0 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
115f0 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
11600 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
11610 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
11620 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
11630 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
11640 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
11650 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20  ecture name...  
11660 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11670 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
11680 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
11690 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
116a0 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  th(MaybeCombineP
116b0 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
116c0 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
116d0 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  y, processorArch
116e0 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e  itecture), fileN
116f0 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
11700 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11710 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
11720 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  f the file name 
11730 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f  based on the pro
11740 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
11750 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ure name..      
11760 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f      // is not fo
11770 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74  und, try using t
11780 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c  he associated pl
11790 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
117a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
117b0 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
117c0 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
117d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
117e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
117f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11800 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
11810 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
11820 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
11830 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20  itecture to a.. 
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
11850 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e        platform n
11860 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
11870 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
11880 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
11890 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50  tformName = GetP
118a0 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63  latformName(proc
118b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
118c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
118d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
118e0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
118f0 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
11900 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c  translate the pl
11910 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f  atform name, sto
11920 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
11930 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11940 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61 74          if (plat
11950 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  formName == null
11960 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11970 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
11980 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
11990 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
119a0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
119b0 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
119c0 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
119d0 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
119e0 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
119f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
11a00 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
11a10 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
11a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
11a30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11a40 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
11a50 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79  pDllFileName(May
11a60 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61  beCombinePath(Ma
11a70 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d  ybeCombinePath(.
11a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11a90 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
11aa0 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c  , platformName),
11ab0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
11ac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11ad0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
11ae0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
11af0 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
11b00 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72  t exist, skip tr
11b10 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e  ying to load it.
11b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b30 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
11b40 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
11b50 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
11b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b70 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
11b80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11b90 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
11ba0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
11bb0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
11bc0 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
11bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
11be0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
11bf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11c00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11c10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
11c20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
11c30 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
11c40 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
11c50 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
11c60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
11c70 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
11c80 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
11c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11cb0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
11cc0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
11cd0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
11ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11cf0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
11d00 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
11d10 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
11d20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
11d30 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
11d40 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20 74  ader is trying t
11d50 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
11d60 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
11d70 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
11d80 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
11d90 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29  ...", fileName))
11da0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
11db0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
11dd0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
11de0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11df0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
11e00 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
11e10 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
11e20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11e30 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11e40 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
11e50 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  mpt to load the 
11e60 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20  native library. 
11e70 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65   This will eithe
11e80 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
11e90 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e   //       return
11ea0 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20   a valid native 
11eb0 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72  module handle, r
11ec0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
11ed0 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
11ee0 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68    //       or th
11ef0 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  row an exception
11f00 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73 65  .  This must use
11f10 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
11f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f30 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b  //       P/Invok
11f40 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65  e method for the
11f50 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
11f60 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20  ng system...    
11f70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11f80 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
11f90 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
11fa0 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
11fb0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
11fc0 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
11fd0 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65   NativeLibraryHe
11fe0 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79  lper.LoadLibrary
11ff0 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
12000 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12010 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c  urn (nativeModul
12020 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  eHandle != IntPt
12030 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
12040 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
12050 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
12060 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
12070 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
12080 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
12090 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
120a0 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
120b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
120c0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
120d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
120e0 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
120f0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
12100 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12120 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
12130 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
12140 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20  First, grab the 
12150 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72  last Win32 error
12160 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
12170 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12190 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20    int lastError 
121a0 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73  = Marshal.GetLas
121b0 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f  tWin32Error(); /
121c0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
121f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
12200 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61 69  how where we fai
12210 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  led to load the 
12220 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
12230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12240 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
12250 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74  y from along wit
12260 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f  h the Win32 erro
12270 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20  r code and..    
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12290 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e         exception
122a0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
122b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
122d0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
122e0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
122f0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
12300 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
12310 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
12320 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
12330 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
12350 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
12360 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
12370 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
12380 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
12390 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
123a0 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
123b0 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d   (getLastError =
123c0 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20   {1}): {2}",..  
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123e0 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61      fileName, la
123f0 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a  stError, e)); /*
12400 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
12410 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12420 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
12430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12450 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
12460 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
12470 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
12480 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12490 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
124a0 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
124b0 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
124c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
124d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12520 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
12530 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12540 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  RK..    //..    
12550 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
12560 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
12570 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69  mework, the nati
12580 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  ve interop assem
12590 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f  bly must..    //
125a0 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62         be used b
125b0 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69 64  ecause it provid
125c0 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61  es several worka
125d0 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43  rounds to .NET C
125e0 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20  ompact..    //  
125f0 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c       Framework l
12600 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72  imitations impor
12610 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20  tant for proper 
12620 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
12630 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20   core..    //   
12640 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
12650 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61  SQLite functiona
12660 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67  lity (e.g. being
12670 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20   able to bind.. 
12680 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61     //       para
12690 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c  meters and handl
126a0 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  e column values 
126b0 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20 61  of types Int64 a
126c0 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20  nd Double)...   
126d0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
126e0 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
126f0 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
12700 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 35 2e  ite.Interop.105.
12710 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c  dll";..#elif SQL
12720 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
12730 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
12740 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
12750 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
12760 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
12770 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e  enabled, use it.
12780 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
12790 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
127a0 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
127b0 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
127c0 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  if USE_INTEROP_D
127d0 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  LL..    //..    
127e0 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
127f0 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
12800 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
12810 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
12820 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
12830 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
12840 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
12850 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
12860 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
12870 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
12880 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
12890 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
128a0 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
128b0 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
128c0 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
128d0 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
128e0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
128f0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
12900 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
12910 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
12920 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
12930 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
12940 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
12950 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
12960 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
12970 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
12980 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
12990 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
129a0 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
129b0 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
129c0 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
129d0 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
129e0 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
129f0 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
12a00 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
12a10 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
12a20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
12a30 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
12a40 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
12a50 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
12a60 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
12a70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12a80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12a90 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
12aa0 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
12ab0 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
12ac0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
12ad0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
12ae0 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
12af0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12b00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
12b10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12b20 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12b30 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
12b40 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
12b50 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
12b60 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
12b70 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
12b80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12b90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
12ba0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12bb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12bc0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
12bd0 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
12be0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
12bf0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
12c00 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
12c10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12c20 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
12c30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12c40 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12c50 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
12c60 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
12c70 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
12c80 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
12c90 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
12ca0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12cb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12cc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
12cd0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
12ce0 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
12cf0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
12d00 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
12d10 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
12d20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12d30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
12d40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12d50 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
12d60 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
12d70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
12d80 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
12d90 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
12da0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
12db0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12dc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12dd0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
12de0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
12df0 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
12e00 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
12e10 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
12e20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
12e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12e40 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
12e50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12e60 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12e70 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
12e80 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
12e90 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
12ea0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
12eb0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
12ec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12ed0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12ee0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12ef0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
12f00 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
12f10 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
12f20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
12f30 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
12f40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12f50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
12f60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12f70 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12f80 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
12f90 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
12fa0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
12fb0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
12fc0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
12fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12fe0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
12ff0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13000 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13010 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
13020 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
13030 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13040 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
13050 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
13060 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13070 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
13080 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13090 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
130a0 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
130b0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
130c0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
130d0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
130e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
130f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
13100 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13110 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13120 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
13130 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
13140 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
13150 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
13160 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13170 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
13180 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13190 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
131a0 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
131b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
131c0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
131d0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
131e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
131f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13200 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13210 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13220 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
13230 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
13240 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
13250 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
13260 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
13270 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
13280 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
13290 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
132a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
132b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
132c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
132d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
132e0 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
132f0 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
13300 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
13310 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
13320 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
13330 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
13340 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
13350 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
13360 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
13370 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
13380 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
13390 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
133a0 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
133b0 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
133c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
133d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
133e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
133f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
13400 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
13410 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
13420 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
13430 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
13440 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13450 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
13460 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13470 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
13480 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
13490 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
134a0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
134b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
134c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
134d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
134e0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
134f0 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
13500 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
13510 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
13520 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
13530 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13540 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13550 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13560 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13570 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
13580 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
13590 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
135a0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
135b0 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
135c0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
135d0 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
135e0 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
135f0 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
13600 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
13610 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
13620 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
13630 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
13640 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
13650 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
13660 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
13670 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
13680 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
13690 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
136a0 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
136b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
136c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
136d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
136e0 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
136f0 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
13700 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13710 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
13720 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13730 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
13740 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
13750 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13760 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13770 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13780 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
13790 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
137a0 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
137b0 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
137c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
137d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
137e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
137f0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13800 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
13810 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
13820 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13830 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13840 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13850 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13860 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13870 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
13880 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
13890 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
138a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
138b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
138c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
138d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
138e0 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
138f0 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
13900 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
13910 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
13920 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
13930 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
13940 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
13950 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
13960 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
13970 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
13980 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
13990 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
139a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
139b0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
139c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
139d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
139e0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
139f0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
13a00 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
13a10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13a20 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
13a30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13a40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13a50 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
13a60 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
13a70 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
13a80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13a90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
13aa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13ab0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13ac0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13ad0 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65  _blob_close_inte
13ae0 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29  rop(IntPtr blob)
13af0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13b00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13b10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13b20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13b30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13b40 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
13b50 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
13b60 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
13b70 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
13b80 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
13b90 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
13ba0 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
13bb0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
13bc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13bd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13be0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13bf0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13c00 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
13c10 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
13c20 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
13c30 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
13c40 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
13c50 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
13c60 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
13c70 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
13c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13c90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13ca0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13cb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13cc0 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
13cd0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
13ce0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13cf0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
13d00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13d10 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
13d20 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
13d30 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
13d40 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
13d50 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
13d60 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
13d70 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
13d80 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
13d90 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
13da0 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
13db0 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
13dc0 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
13dd0 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
13de0 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
13df0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
13e00 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
13e10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13e20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13e30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13e40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13e50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13e60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13e70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13e80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13e90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13ea0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13eb0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13ec0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
13ed0 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
13ee0 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
13ef0 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
13f00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13f10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13f20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13f30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13f40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13f50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13f60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13f70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13f80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13f90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13fa0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13fb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13fc0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
13fd0 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
13fe0 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
13ff0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
14000 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14010 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14020 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14030 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14040 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14050 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14060 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14070 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14080 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14090 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
140a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
140b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
140c0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
140d0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
140e0 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
140f0 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
14100 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
14110 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
14120 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
14130 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
14140 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
14150 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
14160 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14170 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14180 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14190 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
141a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
141b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
141c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
141d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
141e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
141f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14200 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14210 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14220 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
14230 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
14240 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14250 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14270 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14280 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
142a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
142b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
142c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
142d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
142e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
142f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14300 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
14310 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
14320 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
14330 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14340 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14350 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14360 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14370 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14380 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14390 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
143a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
143b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
143c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
143d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
143e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
143f0 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
14400 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
14410 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14420 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14430 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14440 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14450 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14460 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14470 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14480 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14490 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
144a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
144b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
144c0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
144d0 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
144e0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
144f0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
14500 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14510 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14520 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14530 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14540 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14550 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14560 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14570 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14580 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14590 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
145a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
145b0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
145c0 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
145d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
145e0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
145f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14600 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14610 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14620 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14630 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14640 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14650 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14660 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14670 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14680 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14690 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
146a0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
146b0 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
146c0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
146d0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
146e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
146f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14700 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14710 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14720 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14730 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14740 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14750 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14760 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14770 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14780 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
14790 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
147a0 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
147b0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
147c0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
147d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
147e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
147f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14800 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14810 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14830 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14850 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14860 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14870 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14880 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
14890 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
148a0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
148b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
148c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
148d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
148e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
148f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14900 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14910 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14920 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14930 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14940 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14950 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14960 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14970 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
14980 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14990 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
149a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
149b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
149c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
149d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
149e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
149f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14a00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14a10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14a20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14a30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14a40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
14a50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
14a60 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
14a70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14a80 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
14a90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14aa0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14ab0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14ac0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14ad0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14ae0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14af0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14b00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14b10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14b20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14b30 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14b40 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
14b50 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
14b60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
14b70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14b80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14b90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14ba0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14bb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14bc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14bd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14be0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14bf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14c00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14c10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14c20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14c30 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
14c40 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
14c50 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14c60 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
14c70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14c80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14c90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14ca0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14cb0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14cc0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14cd0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14ce0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14cf0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14d00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14d10 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14d20 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
14d30 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
14d40 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
14d50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14d60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14d70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14d80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14d90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14da0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14db0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14dc0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14dd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14de0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14df0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14e00 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14e10 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
14e20 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
14e30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
14e40 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14e50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14e60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14e70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14e80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14e90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14ea0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14eb0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14ec0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14ed0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14ee0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14ef0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14f00 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
14f10 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14f20 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
14f30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14f40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14f50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14f60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14f70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14f80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14f90 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14fa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14fb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14fc0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14fd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
14fe0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
14ff0 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
15000 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
15010 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
15020 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15030 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15050 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15060 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15070 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15080 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15090 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
150a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
150b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
150c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
150d0 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
150e0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
150f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15100 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15110 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15120 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15130 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15140 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15150 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15160 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15170 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15180 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15190 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
151a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
151b0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
151c0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
151d0 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
151e0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
151f0 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
15200 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
15210 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
15220 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15230 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15240 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15250 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15260 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15270 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15280 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15290 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
152a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
152b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
152c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
152d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
152e0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
152f0 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
15300 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
15310 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
15320 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
15330 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
15340 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
15350 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15380 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15390 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
153a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
153b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
153c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
153d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
153e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
153f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
15400 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
15410 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
15420 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
15430 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
15440 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
15450 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
15460 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
15470 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
15480 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
15490 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
154a0 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
154b0 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
154c0 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
154d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
154e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
154f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15500 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15510 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15520 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15530 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15540 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15550 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15560 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15570 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
15580 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
15590 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
155a0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
155b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
155c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
155d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
155e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
155f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15600 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15610 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15620 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15630 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15640 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15650 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
15660 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
15670 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
15680 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
15690 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
156a0 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
156b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
156c0 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
156d0 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
156e0 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
156f0 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
15700 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
15710 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
15720 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
15730 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
15740 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
15750 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
15760 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
15770 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
15780 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
15790 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
157a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
157b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
157c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
157d0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
157e0 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
157f0 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
15800 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
15810 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
15820 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
15830 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15840 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15850 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15860 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
15870 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
15880 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
15890 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
158a0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
158b0 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
158c0 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
158d0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
158e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
158f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15900 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15910 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15920 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
15930 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
15940 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
15950 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
15960 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
15970 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15980 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
15990 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
159a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
159b0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
159c0 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
159d0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
159e0 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
159f0 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
15a00 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
15a10 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
15a20 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
15a30 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
15a40 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
15a50 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
15a60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15a70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15a80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15a90 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
15aa0 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
15ab0 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
15ac0 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
15ad0 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
15ae0 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
15af0 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
15b00 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
15b10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
15b20 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
15b30 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
15b40 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
15b50 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
15b60 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
15b70 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
15b80 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
15b90 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
15ba0 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
15bb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15bc0 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
15bd0 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
15be0 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
15bf0 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
15c00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15c10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15c20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15c30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15c40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15c50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15c60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
15c70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15c80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
15c90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
15ca0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15cb0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
15cc0 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
15cd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15ce0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15cf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15d00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15d10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15d20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15d30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15d40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15d50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15d60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15d70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15d80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
15d90 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
15da0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15db0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15dc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15dd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15de0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15df0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15e00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15e10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15e20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15e30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15e40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15e50 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15e60 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
15e70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15e80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15e90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15ea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15eb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15ec0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15ed0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15ee0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15ef0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15f00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15f10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15f20 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
15f30 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
15f40 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
15f50 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
15f60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15f70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15f80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15f90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15fa0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15fb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15fc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15fd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15fe0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15ff0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16000 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
16010 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
16020 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
16030 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16040 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16050 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16060 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16070 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16080 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16090 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
160a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
160b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
160c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
160d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
160e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
160f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
16100 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
16110 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  he(..        int
16120 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
16130 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16140 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16150 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16160 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16170 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16180 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16190 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
161a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
161b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
161c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
161d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
161e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
161f0 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
16200 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
16210 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
16220 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
16230 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16240 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16250 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16260 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16270 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16280 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16290 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
162a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
162b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
162c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
162d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
162e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
162f0 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  e sqlite3_load_e
16300 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
16310 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79     IntPtr db, by
16320 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62  te[] fileName, b
16330 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20  yte[] procName, 
16340 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
16350 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
16360 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16370 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16380 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16390 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
163a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
163b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
163c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
163d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
163e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
163f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16400 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
16410 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
16420 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f  overload_functio
16430 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  n(IntPtr db, Int
16440 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  Ptr zName, int n
16450 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49  Args);....#if WI
16460 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54  NDOWS..#if !PLAT
16470 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16480 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16490 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
164a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
164b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
164c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
164d0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
164e0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
164f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16500 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
16510 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16520 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
16530 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
16540 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
16550 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
16560 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65  irectory" SQLite
16570 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
16580 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
16590 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
165a0 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
165b0 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  s...    //..    
165c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
165d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
165e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
165f0 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f  in32_set_directo
16600 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74  ry(uint type, st
16610 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
16620 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f  #if !DEBUG // NO
16630 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57  TE: Should be "W
16640 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d  IN32HEAP && !MEM
16650 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41  DEBUG"..#if !PLA
16660 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16670 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16680 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16690 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
166a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
166b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
166c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
166d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
166e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
166f0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
16700 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
16710 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
16720 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
16730 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
16740 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
16750 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
16760 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
16770 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
16780 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
16790 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
167a0 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
167b0 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
167c0 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
167d0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
167e0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
167f0 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
16800 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
16810 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
16820 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
16830 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
16840 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
16850 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
16860 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16870 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16880 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16890 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
168a0 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eap();....#if !P
168b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
168c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
168d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
168e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
168f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16900 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16910 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16930 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16940 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
16950 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
16960 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
16970 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
16980 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
16990 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
169a0 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
169b0 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
169c0 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
169d0 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
169e0 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
169f0 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
16a00 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
16a10 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
16a20 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
16a30 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
16a40 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
16a50 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
16a60 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
16a70 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
16a80 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
16a90 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
16aa0 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
16ab0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
16ac0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
16ad0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
16ae0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
16af0 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69  pact_heap(ref ui
16b00 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65  nt largest);..#e
16b10 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
16b20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16b30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16b40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16b50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
16b60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
16b70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16b80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
16b90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16ba0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
16bb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
16bc0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16bd0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
16be0 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
16bf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16c00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16c10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16c20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16c30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16c40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16c50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16c60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16c70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16c80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16c90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16ca0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
16cb0 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72  3_realloc(IntPtr
16cc0 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23   p, int n);....#
16cd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16ce0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16cf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16d00 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16d10 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16d20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16d30 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16d40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16d50 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16d60 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16d70 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16d80 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
16d90 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
16da0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16db0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16dc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16dd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
16de0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
16df0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16e00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
16e10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16e20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
16e30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
16e40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16e50 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16e60 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
16e70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
16e80 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  name, ref IntPtr
16e90 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46   db, SQLiteOpenF
16ea0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
16eb0 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b  byte[] vfsName);
16ec0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16ed0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16ee0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16ef0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16f00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16f10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16f20 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
16f30 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
16f40 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
16f50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16f60 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
16f70 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
16f80 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
16f90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16fa0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16fb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16fc0 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
16fd0 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49   fileName, ref I
16fe0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
16ff0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17000 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17020 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17030 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17040 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17050 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17070 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17080 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17090 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
170a0 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
170b0 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29  rrupt(IntPtr db)
170c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
170d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
170e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
170f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17100 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17110 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17120 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
17130 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17140 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
17150 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
17160 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
17170 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  db);..#endif....
17180 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17190 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
171a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
171b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
171c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
171d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
171e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
171f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17200 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17210 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17220 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17230 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
17240 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
17250 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17260 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17270 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17280 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17290 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
172a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
172b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
172c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
172d0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
172e0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
172f0 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  d();..#endif....
17300 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17310 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17320 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17330 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17340 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17350 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17360 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
17370 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17380 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
17390 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
173a0 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  er(int resetFlag
173b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
173c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
173d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
173e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
173f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17400 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17410 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17420 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17430 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17440 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17450 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17460 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17470 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17480 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
17490 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
174a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
174b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
174c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
174d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
174e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
174f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17500 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17510 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17520 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17530 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17540 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17550 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
17560 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50  usy_timeout(IntP
17570 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d  tr db, int ms);.
17580 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17590 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
175a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
175b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
175c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
175d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
175e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
175f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17600 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17610 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17620 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17630 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
17640 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61  ode sqlite3_clea
17650 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74  r_bindings(IntPt
17660 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
17670 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17680 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
176a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
176b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
176c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
176d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
176e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
176f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17700 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17710 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17720 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17730 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49  ite3_bind_blob(I
17740 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
17750 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61  index, Byte[] va
17760 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
17770 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e  IntPtr nTransien
17780 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
17790 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
177a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
177b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
177c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
177d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
177e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
177f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17800 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17810 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17820 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
17830 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17840 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76   index, double v
17850 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
17860 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17870 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17880 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17890 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
178a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
178b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
178c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
178d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
178e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
178f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17900 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17910 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17920 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
17930 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
17940 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20   int index, int 
17950 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  value);....    /
17960 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
17970 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
17980 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
17990 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76  bind_int"; howev
179a0 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a  er, it has the..
179b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72      //       cor
179c0 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74  rect type signat
179d0 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67  ure for an unsig
179e0 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74  ned (32-bit) int
179f0 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
17a00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17a10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17a20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17a30 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
17a40 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
17a50 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69  bind_int", Calli
17a60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17a70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17a80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17a90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17aa0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
17ab0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
17ac0 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23  3_bind_int")]..#
17ad0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17ae0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17af0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
17b00 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
17b10 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
17b20 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74   int index, uint
17b30 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
17b40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17b50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17b60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17b70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17b80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17ba0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
17bb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17bc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17bd0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
17be0 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
17bf0 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67   int index, long
17c00 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
17c10 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
17c20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
17c30 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
17c40 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
17c50 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  t64"; however, i
17c60 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
17c70 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
17c80 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
17c90 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c  or an unsigned l
17ca0 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74  ong (64-bit) int
17cb0 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
17cc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17cd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17ce0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17cf0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
17d00 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
17d10 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c  bind_int64", Cal
17d20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17d30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17d40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
17d50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17d60 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17d70 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
17d80 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74  ind_uint64(IntPt
17d90 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
17da0 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  x, ulong value);
17db0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
17dc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17dd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17de0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17df0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17e00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17e10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17e20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17e30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17e40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17e50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17e60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17e70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17e80 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49  ite3_bind_null(I
17e90 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
17ea0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
17eb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17ec0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17ed0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17ee0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17ef0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17f00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17f10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17f20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17f30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17f40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17f50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17f60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17f70 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e  te3_bind_text(In
17f80 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
17f90 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c  ndex, byte[] val
17fa0 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
17fb0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
17fc0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17fd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17fe0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17ff0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18000 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18010 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18020 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18030 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18040 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18050 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18060 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18070 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
18080 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
18090 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
180a0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
180b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
180c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
180d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
180e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
180f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18100 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18110 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18120 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18130 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18140 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18150 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18160 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
18170 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72  ter_index(IntPtr
18180 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74   stmt, byte[] st
18190 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  rName);....#if !
181a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
181b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
181c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
181d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
181e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
181f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18200 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18210 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18220 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18230 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18240 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
18250 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63  sqlite3_column_c
18260 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
18270 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18280 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18290 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
182a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
182b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
182c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
182d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
182e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
182f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18300 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18310 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18320 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18330 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
18340 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  tep(IntPtr stmt)
18350 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18360 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18370 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18380 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18390 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
183a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
183b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
183c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
183d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
183e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
183f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18400 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
18410 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
18420 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a  IntPtr stmt); /*
18430 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69   3.7.4+ */....#i
18440 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18450 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18470 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18480 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
184a0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
184b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
184c0 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
184d0 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
184e0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
184f0 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
18500 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18510 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18520 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18530 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18540 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18550 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18560 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18570 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18580 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18590 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
185a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
185b0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
185c0 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
185d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
185e0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
185f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18600 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18610 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18620 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18630 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18640 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18650 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18660 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
18670 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
18680 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
18690 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
186a0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
186b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
186c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
186d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
186e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
186f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18700 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18710 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18720 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18730 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18740 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18750 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18760 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
18770 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74  n_blob(IntPtr st
18780 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
18790 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
187a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
187b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
187c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
187d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
187e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
187f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18800 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18820 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18830 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18840 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
18850 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74  column_bytes(Int
18860 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
18870 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
18880 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18890 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
188a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
188b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
188c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
188d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
188e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
188f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18900 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18910 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18920 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
18930 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
18940 65 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  es16(IntPtr stmt
18950 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
18960 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18970 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18980 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18990 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
189a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
189b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
189c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
189d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
189e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
189f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18a00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18a10 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73  n TypeAffinity s
18a20 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
18a30 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
18a40 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
18a50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18a60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18a70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18a80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18a90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18aa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18ab0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18ac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18ad0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18ae0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18af0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18b00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18b10 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
18b20 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20  ollation(IntPtr 
18b30 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
18b40 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  me, int nType, I
18b50 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
18b60 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75  LiteCollation fu
18b70 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nc);....#if !PLA
18b80 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18b90 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18ba0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18bb0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18bc0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18bd0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18be0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18bf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18c00 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18c10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18c20 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18c30 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
18c40 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  ount(IntPtr cont
18c50 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
18c60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18c70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18c80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18c90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18ca0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18cb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18cc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18cd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18ce0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18cf0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18d00 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18d10 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
18d20 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  lob(IntPtr p);..
18d30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18d40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18d60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18d70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18d80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18d90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18da0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18db0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18dc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
18dd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18de0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
18df0 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74  alue_bytes(IntPt
18e00 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
18e10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18e20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18e40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18e50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18e60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18e70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18e80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18e90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18ea0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18eb0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
18ec0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
18ed0 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  s16(IntPtr p);..
18ee0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18ef0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18f00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18f10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18f20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18f30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18f40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
18f50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18f60 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
18f70 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
18f80 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  le(IntPtr p);..#
18f90 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
18fa0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18fb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18fc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18fd0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18fe0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18ff0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19000 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19010 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19020 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19040 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
19050 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
19060 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
19070 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19080 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
190a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
190b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
190c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
190d0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
190e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
190f0 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
19100 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50  value_int64(IntP
19110 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
19120 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19130 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19150 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19160 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19170 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19180 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19190 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
191a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
191b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
191c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
191d0 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
191e0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
191f0 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  pe(IntPtr p);...
19200 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19210 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19220 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19230 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19240 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19260 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19270 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19280 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
19290 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
192a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
192b0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
192c0 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74  esult_blob(IntPt
192d0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
192e0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
192f0 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  ze, IntPtr pvRes
19300 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
19310 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19320 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19330 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19340 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
19350 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
19360 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19370 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
19380 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19390 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
193a0 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ult_double(IntPt
193b0 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c  r context, doubl
193c0 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
193d0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
193e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
193f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19400 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19420 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19430 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19440 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19450 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19460 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19470 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19480 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
19490 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28  e3_result_error(
194a0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
194b0 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69  byte[] strErr, i
194c0 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
194d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
194e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
194f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19500 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19510 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19520 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19530 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19550 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19560 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19570 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
19580 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
19590 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74  t_error_code(Int
195a0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
195b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c  iteErrorCode val
195c0 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
195d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
195e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
195f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19600 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19610 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19620 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19630 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
19640 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19650 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
19660 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19670 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
19680 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
19690 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72  or_toobig(IntPtr
196a0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
196b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
196c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
196d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
196e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
196f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19700 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19710 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19720 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19730 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19740 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19750 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
19760 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
19770 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49  lt_error_nomem(I
19780 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
19790 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
197a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
197b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
197c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
197d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
197e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
197f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19800 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19820 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19830 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19840 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
19850 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e  _result_value(In
19860 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
19870 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  tPtr value);....
19880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
198a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
198b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
198c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
198d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
198e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
198f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19900 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19910 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19930 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
19940 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e  sult_zeroblob(In
19950 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
19960 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
19970 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19980 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19990 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
199a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
199b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
199c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
199d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
199e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
199f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19a00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19a10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
19a20 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
19a30 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  _int(IntPtr cont
19a40 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  ext, int value);
19a50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19a60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19a70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19a90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19aa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19ab0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
19ac0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19ad0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
19ae0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
19af0 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  64(IntPtr contex
19b00 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  t, long value);.
19b10 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
19b20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19b30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19b40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19b50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
19b60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
19b70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19b80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
19b90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19ba0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
19bb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19bc0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
19bd0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
19be0 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  null(IntPtr cont
19bf0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
19c00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19c10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19c20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19c30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19c40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19c50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19c60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19c70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19c80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19c90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19ca0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
19cb0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
19cc0 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
19cd0 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
19ce0 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
19cf0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
19d00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19d10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19d20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19d30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19d40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19d50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19d60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19d70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
19d80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19d90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19da0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19db0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
19dc0 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74  3_aggregate_cont
19dd0 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
19de0 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  xt, int nBytes);
19df0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19e00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19e10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19e20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19e30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19e40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19e50 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
19e60 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
19e70 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
19e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19e90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
19ea0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
19eb0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
19ec0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19ed0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
19ee0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19ef0 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49  e3_bind_text16(I
19f00 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
19f10 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
19f20 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
19f30 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
19f40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19f50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19f60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19f70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19f80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19f90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19fa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
19fb0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
19fc0 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
19fd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19fe0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
19ff0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1a000 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
1a010 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a020 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1a030 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1a040 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20  _error16(IntPtr 
1a050 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
1a060 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
1a070 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
1a080 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a090 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a0a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a0b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a0c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a0d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
1a0e0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1a0f0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
1a100 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a110 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
1a120 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
1a130 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
1a140 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1a150 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1a160 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1a170 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  t_text16(IntPtr 
1a180 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
1a190 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
1a1a0 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
1a1b0 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  rved);....#if IN
1a1c0 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49  TEROP_CODEC || I
1a1d0 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53  NTEROP_INCLUDE_S
1a1e0 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  EE..#if !PLATFOR
1a1f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a200 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a210 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a220 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a230 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a240 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a250 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a260 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a270 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a280 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a290 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a2a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79  Code sqlite3_key
1a2b0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
1a2c0 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
1a2d0 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
1a2e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a2f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1a300 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a310 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1a320 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1a330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a340 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1a350 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a360 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1a370 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a380 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1a390 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1a3a0 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62  _rekey(IntPtr db
1a3b0 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
1a3c0 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64  t keylen);..#end
1a3d0 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  if....#if INTERO
1a3e0 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53  P_INCLUDE_ZIPVFS
1a3f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a400 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a410 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a420 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a430 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a440 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a450 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a460 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a470 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a480 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a490 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a4a0 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e  rn void zipvfsIn
1a4b0 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20  it_v2();....#if 
1a4c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a4d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a4e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a4f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a500 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a510 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a520 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a530 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a540 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a550 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a560 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1a570 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28  d zipvfsInit_v3(
1a580 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23  int regDflt);..#
1a590 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1a5a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a5b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a5c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a5d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a5e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a5f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a600 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a610 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a620 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a630 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a640 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1a650 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
1a660 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64  handler(IntPtr d
1a670 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69  b, int ops, SQLi
1a680 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61  teProgressCallba
1a690 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
1a6a0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
1a6b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a6c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a6d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a6e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a6f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a700 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a710 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a720 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a730 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a740 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a750 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a760 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  Ptr sqlite3_set_
1a770 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74  authorizer(IntPt
1a780 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68  r db, SQLiteAuth
1a790 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66  orizerCallback f
1a7a0 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
1a7b0 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
1a7c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a7d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1a7e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a7f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1a800 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1a810 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a820 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1a830 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a840 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1a850 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a860 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1a870 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
1a880 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
1a890 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
1a8a0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
1a8b0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
1a8c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1a8d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a8e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a8f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1a900 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1a910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1a920 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1a930 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a940 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1a950 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1a960 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1a970 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
1a980 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
1a990 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
1a9a0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
1a9b0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
1a9c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a9d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a9e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a9f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1aa00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1aa10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1aa20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1aa30 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1aa40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1aa50 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1aa60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1aa70 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1aa80 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
1aa90 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
1aaa0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1aab0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1aac0 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
1aad0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
1aae0 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
1aaf0 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
1ab00 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
1ab10 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
1ab20 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
1ab30 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
1ab40 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
1ab50 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
1ab60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ab70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ab80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1ab90 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1aba0 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
1abb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1abc0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1abd0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1abe0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1abf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1ac00 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1ac10 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
1ac20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ac30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ac40 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1ac50 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
1ac60 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
1ac70 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
1ac80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ac90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1aca0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1acb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1acc0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1acd0 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
1ace0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1acf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ad00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ad10 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ad20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1ad30 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1ad40 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
1ad50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ad60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ad70 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1ad80 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
1ad90 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
1ada0 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
1adb0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
1adc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1add0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ade0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1adf0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1ae00 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
1ae10 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
1ae20 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ae30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ae40 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ae50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ae60 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1ae70 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
1ae80 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
1ae90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1aea0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1aeb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1aec0 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
1aed0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
1aee0 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
1aef0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
1af00 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
1af10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1af20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1af30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1af40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1af50 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1af60 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", Ca
1af70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1af80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1af90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1afa0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1afb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1afc0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1afd0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
1afe0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aff0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b000 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1b010 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
1b020 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69  _config_int_refi
1b030 6e 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  nt(IntPtr db, SQ
1b040 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
1b050 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
1b060 65 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c  e, ref int resul
1b070 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1b080 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b090 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b0a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b0b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b0c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b0d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b0e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b0f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b100 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b110 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b120 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1b130 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
1b140 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
1b150 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
1b160 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1b170 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1b180 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b190 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b1a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b1b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b1c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b1d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b1e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b1f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b200 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b210 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b220 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b230 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1b240 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72  db_handle(IntPtr
1b250 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1b260 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b270 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b290 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b2a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b2b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b2c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b2d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b2e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b2f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b300 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1b310 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1b320 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d  te3_db_release_m
1b330 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29  emory(IntPtr db)
1b340 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b350 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b360 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b370 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b380 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b390 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b3a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b3b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b3c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b3d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b3e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b3f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1b400 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
1b410 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
1b420 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
1b430 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b440 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b450 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b460 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b470 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b490 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b4a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b4b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b4c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b4d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b4e0 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  int sqlite3_db_r
1b4f0 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64  eadonly(IntPtr d
1b500 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65  b, IntPtr dbName
1b510 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b520 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b530 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b540 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b550 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1b560 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
1b570 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  me", CallingConv
1b580 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b590 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b5a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b5b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b5c0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
1b5d0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
1b5e0 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64  ilename")]..#end
1b5f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b600 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1b610 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
1b620 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28  _filename_bytes(
1b630 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1b640 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  ] dbName);....#i
1b650 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b660 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b670 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b680 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b690 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b6a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b6b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b6c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b6d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b6e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b6f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1b700 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
1b710 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
1b720 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
1b730 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b740 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b750 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b770 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b780 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b790 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b7a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b7b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b7c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b7d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b7e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1b7f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
1b800 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
1b810 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
1b820 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
1b830 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72  ntPtr pvParam, r
1b840 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ef IntPtr errMsg
1b850 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b860 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b870 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b880 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b890 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b8a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b8b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b8c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b8d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b8e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b8f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b900 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1b910 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
1b920 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  y(int nBytes);..
1b930 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b940 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b950 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b960 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b970 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b980 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b990 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b9a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b9b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b9c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b9d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b9e0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67  rn int sqlite3_g
1b9f0 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e  et_autocommit(In
1ba00 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1ba10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ba20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ba30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ba40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ba50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ba60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ba70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ba80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ba90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1baa0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1bab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1bac0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1bad0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72  lite3_extended_r
1bae0 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50  esult_codes(IntP
1baf0 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66  tr db, int onoff
1bb00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1bb10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bb20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bb30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bb40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bb50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bb60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1bb70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bb80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bb90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bba0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bbb0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1bbc0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
1bbd0 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62  rrcode(IntPtr db
1bbe0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1bbf0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bc00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bc10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bc20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bc30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bc40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1bc50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bc60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bc70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bc80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bc90 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1bca0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
1bcb0 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
1bcc0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
1bcd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1bce0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1bcf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bd00 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1bd10 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1bd20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1bd30 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1bd40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bd50 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1bd60 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1bd70 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bd80 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
1bd90 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f  rrstr(SQLiteErro
1bda0 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e  rCode rc); /* 3.
1bdb0 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20  7.15+ */....    
1bdc0 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
1bdd0 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76  _log() takes a v
1bde0 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
1bdf0 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
1be00 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
1be10 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
1be20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
1be30 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77   calls.  For now
1be40 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78  , we are only ex
1be50 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20  posing a single 
1be60 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20  string, and..   
1be70 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68   // depend on th
1be80 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d  e caller to form
1be90 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a  at the string...
1bea0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1beb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bec0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bed0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bee0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bef0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bf00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bf10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bf20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1bf30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1bf40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bf50 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f   void sqlite3_lo
1bf60 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  g(SQLiteErrorCod
1bf70 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65  e iErrCode, byte
1bf80 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a  [] zFormat);....
1bf90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1bfa0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bfb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bfc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bfd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bfe0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bff0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c000 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c010 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c020 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c030 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c040 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1c050 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
1c060 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c  ntrol(IntPtr db,
1c070 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c   byte[] zDbName,
1c080 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20   int op, IntPtr 
1c090 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pArg);....#if !P
1c0a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c0b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c0c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c0d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c0e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c0f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c100 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c110 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c120 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c130 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c140 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1c150 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  r sqlite3_backup
1c160 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73  _init(IntPtr des
1c170 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73  tDb, byte[] zDes
1c180 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f  tName, IntPtr so
1c190 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a  urceDb, byte[] z
1c1a0 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  SourceName);....
1c1b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c1c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c1d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c1e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c1f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c200 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c210 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c220 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c230 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c240 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c250 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c260 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1c270 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
1c280 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b  step(IntPtr back
1c290 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d  up, int nPage);.
1c2a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c2b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c2c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c2d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c2e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c2f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c300 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c310 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c320 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c330 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c340 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c350 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1c360 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67  backup_remaining
1c370 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
1c380 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c390 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c3a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c3b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c3c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c3d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c3e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c3f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c400 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c410 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1c420 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c430 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1c440 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e  _backup_pagecoun
1c450 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  t(IntPtr backup)
1c460 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c470 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c480 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c490 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c4a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c4b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c4c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c4d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c4e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c4f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c500 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c510 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c520 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
1c530 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  ob_close(IntPtr 
1c540 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  blob);....#if !P
1c550 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c560 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c570 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c580 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c590 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c5a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c5b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c5c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c5d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c5e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c5f0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1c600 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65  qlite3_blob_byte
1c610 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  s(IntPtr blob);.
1c620 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c630 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c640 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c650 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c660 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c670 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c680 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c690 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c6a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c6b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c6c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c6d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c6e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
1c6f0 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c  _open(IntPtr db,
1c700 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
1c710 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
1c720 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
1c730 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20  long rowId, int 
1c740 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74  flags, ref IntPt
1c750 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23  r ptrBlob);....#
1c760 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c770 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c790 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c7a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c7b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c7c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c7d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c7e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c7f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c800 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c810 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c820 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61  sqlite3_blob_rea
1c830 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  d(IntPtr blob, [
1c840 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
1c850 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
1c860 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
1c870 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
1c880 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
1c890 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c8a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c8b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c8c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c8d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c8e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c8f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c900 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c910 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1c920 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c930 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1c940 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1c950 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e  ite3_blob_reopen
1c960 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f  (IntPtr blob, lo
1c970 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69  ng rowId);....#i
1c980 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c990 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c9a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c9b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c9c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c9d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c9e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c9f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ca00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ca10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ca20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1ca30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1ca40 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74  qlite3_blob_writ
1ca50 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  e(IntPtr blob, [
1ca60 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
1ca70 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
1ca80 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
1ca90 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
1caa0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
1cab0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cac0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cad0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cae0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1caf0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1cb00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1cb10 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1cb20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cb30 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1cb40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cb50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cb60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cb70 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
1cb80 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  b(IntPtr db, Int
1cb90 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69  Ptr zSQL);....#i
1cba0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cbb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cbc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cbd0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cbe0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1cbf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1cc00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1cc10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cc20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1cc30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1cc40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1cc50 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70  ntPtr sqlite3_mp
1cc60 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72  rintf(IntPtr for
1cc70 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b  mat, __arglist);
1cc80 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1cc90 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74  ....    // SQLit
1cca0 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74  e API calls that
1ccb0 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79   are provided by
1ccc0 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78   "well-known" ex
1ccd0 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61  tensions that ma
1cce0 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d  y be statically.
1ccf0 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77  .    // linked w
1cd00 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
1cd10 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ore native libra
1cd20 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20  ry currently in 
1cd30 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  use...    #regio
1cd40 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69  n extension sqli
1cd50 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69  te api calls..#i
1cd60 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
1cd70 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
1cd80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1cd90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1cda0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cdb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1cdc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cdd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cde0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1cdf0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ce00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ce10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ce20 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1ce30 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
1ce40 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
1ce50 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1ce60 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71  Ptr name, ref sq
1ce70 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
1ce80 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  ule, IntPtr pCli
1ce90 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f  entData, xDestro
1cea0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
1ceb0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1cec0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ced0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cee0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cef0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cf00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1cf10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cf20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1cf30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cf40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cf50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cf60 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1cf70 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75  te3_dispose_modu
1cf80 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  le(IntPtr pModul
1cf90 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
1cfa0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1cfb0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1cfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d000 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71  ..    #region sq
1d010 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69  lite interop api
1d020 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d   calls (.NET Com
1d030 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f  pact Framework o
1d040 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f  nly)..#if PLATFO
1d050 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d060 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
1d070 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c  TANDARD..    [Dl
1d080 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d090 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1d0a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d0b0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61   void sqlite3_la
1d0c0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f  st_insert_rowid_
1d0d0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
1d0e0 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49  b, ref long rowI
1d0f0 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
1d100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d110 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d120 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1d130 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
1d140 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28  ry_used_interop(
1d150 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b  ref long bytes);
1d160 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d170 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d180 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d190 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1d1a0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
1d1b0 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
1d1c0 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
1d1d0 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
1d1e0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1d1f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d200 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d210 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1d220 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1d230 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
1d240 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1d250 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1d260 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
1d270 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
1d280 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d290 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d2a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d2b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d2c0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
1d2d0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
1d2e0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1d2f0 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
1d300 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d310 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d320 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1d330 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
1d340 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20  4_interop")]..  
1d350 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d360 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1d370 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1d380 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74  _bind_uint64_int
1d390 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d3a0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d3b0 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
1d3c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d3d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d3e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d3f0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1d400 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
1d410 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
1d420 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d430 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
1d440 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
1d450 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d460 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1d470 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d480 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1d490 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74  column_int64_int
1d4a0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d4b0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d4c0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
1d4d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d4e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1d4f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d500 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1d510 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
1d520 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
1d530 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  r p, ref double 
1d540 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
1d550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d560 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1d570 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d580 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1d590 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
1d5a0 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
1d5b0 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
1d5c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1d5d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d5e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d5f0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1d600 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
1d610 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
1d620 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1d630 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
1d640 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d650 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d660 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d670 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1d680 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1d690 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
1d6a0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1d6b0 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
1d6c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1d6d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d6e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d6f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1d700 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
1d710 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
1d720 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
1d730 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
1d740 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74  IntPtr name, Int
1d750 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74  Ptr pModule, int
1d760 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61   iVersion, xCrea
1d770 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  te xCreate,..   
1d780 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43       xConnect xC
1d790 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64  onnect, xBestInd
1d7a0 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78  ex xBestIndex, x
1d7b0 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
1d7c0 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20  onnect,..       
1d7d0 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
1d7e0 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c  oy, xOpen xOpen,
1d7f0 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20   xClose xClose, 
1d800 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  xFilter xFilter,
1d810 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74 20  ..        xNext 
1d820 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66  xNext, xEof xEof
1d830 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  , xColumn xColum
1d840 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  n, xRowId xRowId
1d850 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  , xUpdate xUpdat
1d860 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67  e,..        xBeg
1d870 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63  in xBegin, xSync
1d880 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20   xSync, xCommit 
1d890 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61  xCommit, xRollba
1d8a0 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20  ck xRollback,.. 
1d8b0 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
1d8c0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
1d8d0 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  on, xRename xRen
1d8e0 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20  ame, xSavepoint 
1d8f0 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20  xSavepoint,..   
1d900 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78 52       xRelease xR
1d910 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63  elease, xRollbac
1d920 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c  kTo xRollbackTo,
1d930 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
1d940 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ata,..        xD
1d950 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65  estroyModule xDe
1d960 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23  stroyModule);..#
1d970 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c  endif..    // PL
1d980 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d990 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
1d9a0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
1d9b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1d9c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1da10 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
1da20 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a  tive Delegates..
1da30 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
1da40 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
1da50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1da60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1da70 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1da80 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1da90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1daa0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1dab0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1dac0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1dad0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
1dae0 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
1daf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
1db00 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ux,..        int
1db10 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
1db20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1db30 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1db40 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1db50 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
1db60 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1db70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1db80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1dbc0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1dbd0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1dbe0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1dbf0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1dc00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dc10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1dc20 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1dc30 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1dc40 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d  rCode xConnect(.
1dc50 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1dc60 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
1dc70 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
1dc80 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
1dc90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1dca0 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
1dcb0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1dcc0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
1dcd0 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
1dce0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1dcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd30 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1dd40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1dd50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1dd60 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1dd70 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1dd80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dd90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1dda0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1ddb0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
1ddc0 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
1ddd0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1dde0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1ddf0 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a  pIndex..    );..
1de00 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1de10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de50 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1de60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1de70 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1de80 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1de90 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1dea0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1deb0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1dec0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1ded0 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f  ErrorCode xDisco
1dee0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1def0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1df00 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1df60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1df70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1df80 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1df90 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1dfa0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dfb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1dfc0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1dfd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1dfe0 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
1dff0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1e000 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1e060 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e070 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e080 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1e090 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1e0a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e0b0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1e0c0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1e0d0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1e0e0 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
1e0f0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1e100 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
1e110 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
1e120 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1e130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e170 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1e180 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e190 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e1a0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1e1b0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1e1c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e1d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e1e0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1e1f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e200 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
1e210 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
1e220 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1e230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1e280 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e290 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e2a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1e2b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1e2c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e2d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1e2e0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1e2f0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1e300 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
1e310 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1e320 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  sor,..        in
1e330 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
1e340 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72     IntPtr idxStr
1e350 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1e360 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1e370 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29  tPtr argv..    )
1e380 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1e390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e3d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1e3e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e3f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1e400 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1e410 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1e420 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e430 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1e440 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1e450 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65  iteErrorCode xNe
1e460 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  xt(..        Int
1e470 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
1e480 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1e4e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e4f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1e500 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1e510 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1e520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e530 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1e540 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
1e550 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
1e560 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
1e570 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1e5d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e5e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e5f0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1e600 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1e610 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e620 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1e630 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1e640 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1e650 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
1e660 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
1e670 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49  rsor,..        I
1e680 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
1e690 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64  .        int ind
1e6a0 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
1e6b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e700 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e710 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e720 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1e730 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1e740 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e750 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1e760 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1e770 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1e780 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20  rCode xRowId(.. 
1e790 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1e7a0 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
1e7b0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
1e7c0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1e7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1e820 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e830 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e840 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1e850 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1e860 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e870 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1e880 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1e890 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1e8a0 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  e xUpdate(..    
1e8b0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1e8c0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1e8d0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1e8e0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1e8f0 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
1e900 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
1e910 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e960 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e970 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e980 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1e990 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1e9a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e9b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1e9c0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1e9d0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1e9e0 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
1e9f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1ea00 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1ea10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ea20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ea70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ea80 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1ea90 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1eaa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1eab0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1eac0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1ead0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1eae0 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
1eaf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1eb00 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1eb10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1eb60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1eb70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1eb80 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1eb90 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1eba0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ebb0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1ebc0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1ebd0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1ebe0 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d  orCode xCommit(.
1ebf0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1ec00 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1ec10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1ec20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ec70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ec80 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1ec90 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1eca0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1ecb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1ecc0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1ecd0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1ece0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
1ecf0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ck(..        Int
1ed00 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
1ed10 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1ed20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed60 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1ed70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ed80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1ed90 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1eda0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1edb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1edc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1edd0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
1ede0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d   xFindFunction(.
1edf0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1ee00 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1ee10 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20  int nArg,..     
1ee20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c     IntPtr zName,
1ee30 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53 51  ..        ref SQ
1ee40 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c  LiteCallback cal
1ee50 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1ee60 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65 72  ref IntPtr pUser
1ee70 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Data..    );....
1ee80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1eed0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1eee0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1eef0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1ef00 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1ef10 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1ef20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1ef30 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1ef40 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1ef50 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28  rorCode xRename(
1ef60 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ef70 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1ef80 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20   IntPtr zNew..  
1ef90 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efe0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1eff0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f000 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f010 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1f020 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1f030 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f040 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f050 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1f060 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f070 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
1f080 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1f090 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
1f0a0 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
1f0b0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1f0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f100 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1f110 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f120 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1f130 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1f140 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1f150 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f160 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1f170 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1f180 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
1f190 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
1f1a0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1f1b0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
1f1c0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
1f1d0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f220 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1f230 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f240 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1f250 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1f260 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1f270 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f280 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1f290 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1f2a0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
1f2b0 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1f2c0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1f2d0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1f2e0 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
1f2f0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f340 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f350 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f360 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1f370 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1f380 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1f390 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1f3a0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1f3b0 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44  delegate void xD
1f3c0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74  estroyModule(Int
1f3d0 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29  Ptr pClientData)
1f3e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
1f3f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f400 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f450 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
1f460 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23  ve Structures..#
1f470 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
1f480 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53  AL_TABLE..    [S
1f490 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1f4a0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1f4b0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1f4c0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1f4d0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a  _module..    {..
1f4e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1f4f0 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
1f500 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 72        public xCr
1f510 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20  eate xCreate;.. 
1f520 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
1f530 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b  onnect xConnect;
1f540 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f550 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73   xBestIndex xBes
1f560 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  tIndex;..       
1f570 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e   public xDisconn
1f580 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b  ect xDisconnect;
1f590 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f5a0 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
1f5b0 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  oy;..        pub
1f5c0 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b  lic xOpen xOpen;
1f5d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f5e0 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d   xClose xClose;.
1f5f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f600 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
1f610 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f620 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20   xNext xNext;.. 
1f630 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 45         public xE
1f640 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20  of xEof;..      
1f650 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e    public xColumn
1f660 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   xColumn;..     
1f670 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64     public xRowId
1f680 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20   xRowId;..      
1f690 20 20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65    public xUpdate
1f6a0 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20   xUpdate;..     
1f6b0 20 20 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e     public xBegin
1f6c0 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20   xBegin;..      
1f6d0 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78    public xSync x
1f6e0 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70  Sync;..        p
1f6f0 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
1f700 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
1f710 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
1f720 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20   xRollback;..   
1f730 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e       public xFin
1f740 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
1f750 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  unction;..      
1f760 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65    public xRename
1f770 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20   xRename;..     
1f780 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64     /* The method
1f790 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76  s above are in v
1f7a0 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20  ersion 1 of the 
1f7b0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
1f7c0 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63           * objec
1f7d0 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20  t.  Those below 
1f7e0 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  are for version 
1f7f0 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a  2 and greater. *
1f800 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1f810 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  c xSavepoint xSa
1f820 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20  vepoint;..      
1f830 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73    public xReleas
1f840 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20  e xRelease;..   
1f850 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
1f860 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63  lbackTo xRollbac
1f870 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  kTo;..    }.... 
1f880 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f8d0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1f8e0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1f8f0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1f900 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1f910 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20   sqlite3_vtab.. 
1f920 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1f930 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64  blic IntPtr pMod
1f940 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ule;..        pu
1f950 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f  blic int nRef; /
1f960 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44  * NO LONGER USED
1f970 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1f980 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d  lic IntPtr zErrM
1f990 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  sg;..    }....  
1f9a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f9f0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1fa00 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1fa10 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1fa20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1fa30 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
1fa40 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sor..    {..    
1fa50 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1fa60 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d  r pVTab;..    }.
1fa70 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fac0 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
1fad0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
1fae0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
1faf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fb00 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
1fb10 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  ex_constraint.. 
1fb20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1fb30 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
1fb40 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  ex_constraint(..
1fb50 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1fb60 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
1fb70 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  t constraint..  
1fb80 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1fb90 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1fba0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1fbb0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
1fbc0 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c  nstraint != null
1fbd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1fbe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fbf0 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73    iColumn = cons
1fc00 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d  traint.iColumn;.
1fc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74   op = constraint
1fc30 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .op;..          
1fc40 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63        usable = c
1fc50 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65  onstraint.usable
1fc60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1fc70 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d     iTermOffset =
1fc80 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72   constraint.iTer
1fc90 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  mOffset;..      
1fca0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1fcb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1fd10 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
1fd20 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
1fd30 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
1fd40 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b  ConstraintOp op;
1fd50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1fd60 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20   byte usable;.. 
1fd70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1fd80 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t iTermOffset;..
1fd90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fde0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1fdf0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
1fe00 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
1fe10 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
1fe20 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
1fe30 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
1fe40 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1fe50 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
1fe60 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a  index_orderby(..
1fe70 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1fe80 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f  teIndexOrderBy o
1fe90 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20  rderBy..        
1fea0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1feb0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
1fec0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fed0 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20      if (orderBy 
1fee0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1fef0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ff00 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
1ff10 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75   = orderBy.iColu
1ff20 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
1ff30 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65       desc = orde
1ff40 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20  rBy.desc;..     
1ff50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ff60 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1ff70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1ffc0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
1ffd0 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20  lumn; /* Column 
1ffe0 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20  number */..     
1fff0 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 64     public byte d
20000 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66  esc;   /* True f
20010 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20  or DESC.  False 
20020 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20  for ASC. */..   
20030 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
20040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20080 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
20090 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
200a0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
200b0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
200c0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
200d0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
200e0 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20  _usage..    {.. 
200f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
20100 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
20110 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20  traint_usage(.. 
20120 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
20130 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
20140 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  Usage constraint
20150 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20  Usage..         
20160 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
20170 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
20180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20190 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
201a0 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d  tUsage != null).
201b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
201c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201d0 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73  argvIndex = cons
201e0 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76  traintUsage.argv
201f0 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
20200 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63          omit = c
20210 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f  onstraintUsage.o
20220 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mit;..          
20230 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
20240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20290 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
202a0 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65  lic int argvInde
202b0 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e  x; /* if >0, con
202c0 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20  straint is part 
202d0 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74  of argv to xFilt
202e0 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  er */..        p
202f0 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b  ublic byte omit;
20300 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63       /* Do not c
20310 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74  ode a test for t
20320 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a  his constraint *
20330 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
20340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20390 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
203a0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
203b0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
203c0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
203d0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
203e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
203f0 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20   /* Inputs */.. 
20400 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
20410 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f  t nConstraint; /
20420 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72  * Number of entr
20430 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69  ies in aConstrai
20440 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  nt */..        p
20450 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f  ublic IntPtr aCo
20460 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20  nstraint;..     
20470 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f     public int nO
20480 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75  rderBy;    /* Nu
20490 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
204a0 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a  in aOrderBy */..
204b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
204c0 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d  ntPtr aOrderBy;.
204d0 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70  .        /* Outp
204e0 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
204f0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
20500 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d  onstraintUsage;.
20510 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20520 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
20530 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
20540 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
20550 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20   the index */.. 
20560 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
20570 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20  ring idxStr;    
20580 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70      /* String, p
20590 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64  ossibly obtained
205a0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
205b0 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lloc */..       
205c0 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64   public int need
205d0 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a  ToFreeIdxStr; /*
205e0 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73 69   Free idxStr usi
205f0 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ng sqlite3_free(
20600 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20  ) if true */..  
20610 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
20620 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
20630 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
20640 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
20650 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
20660 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
20670 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
20680 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
20690 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
206a0 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
206b0 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65     public long e
206c0 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20  stimatedRows;   
206d0 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d  /* Estimated num
206e0 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75  ber of rows retu
206f0 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  rned */..       
20700 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
20710 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67  dexFlags idxFlag
20720 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51  s; /* Mask of SQ
20730 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f  LITE_INDEX_SCAN_
20740 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20  * flags */..    
20750 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20      public long 
20760 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20  colUsed;        
20770 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20   /* Input: Mask 
20780 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20  of columns used 
20790 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d  by statement */.
207a0 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
207b0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
207c0 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
207d0 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
207e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20820 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
20830 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  n .NET Compact F
20840 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20  ramework (only) 
20850 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43  CriticalHandle C
20860 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f  lass..#if PLATFO
20870 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20880 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
20890 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
208a0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
208b0 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
208c0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
208d0 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
208e0 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
208f0 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
20900 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
20910 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
20920 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
20930 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
20940 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
20950 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
20960 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
20970 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
20980 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
20990 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
209a0 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
209b0 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
209c0 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
209d0 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
209e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
209f0 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
20a00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
20a10 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
20a20 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
20a30 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
20a40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20a50 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
20a60 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
20a70 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
20a80 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
20a90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
20aa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
20ab0 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
20ac0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
20ad0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
20ae0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
20af0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
20b00 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
20b10 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
20b20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
20b30 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
20b40 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
20b50 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
20b60 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
20b70 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
20b80 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
20b90 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
20ba0 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
20bb0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
20bc0 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
20bd0 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
20be0 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
20bf0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
20c00 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
20c10 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
20c20 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
20c30 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
20c40 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
20c50 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
20c60 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
20c70 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
20c80 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
20c90 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
20ca0 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
20cb0 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
20cc0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
20cd0 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
20ce0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
20cf0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
20d00 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
20d10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
20d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20d70 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
20d80 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
20d90 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
20da0 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
20db0 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
20dc0 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
20dd0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
20de0 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
20df0 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
20e00 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
20e10 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
20e20 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
20e30 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
20e40 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
20e50 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
20e60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20e70 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
20e80 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
20e90 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
20ea0 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
20eb0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20ec0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
20ed0 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
20ee0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
20ef0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
20f00 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
20f10 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
20f20 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
20f30 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
20f40 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
20f50 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
20f60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
20f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20fb0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
20fc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20fd0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
20fe0 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
20ff0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
21000 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
21010 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
21060 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
21070 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
21080 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
21090 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
210a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
210e0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
210f0 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
21100 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
21110 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
21120 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
21130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
21140 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
21150 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
21160 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
21170 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
21190 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
211a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
211b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
211c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211d0 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
211e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
211f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21200 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
21210 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
21220 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
21230 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
21290 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
212a0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
212b0 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
212c0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
212d0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
212e0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
212f0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
21300 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21310 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21320 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
21330 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21340 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
21350 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
21360 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
21370 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
21380 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
21390 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
213a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
213b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
213c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
21410 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
21420 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
21430 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
21440 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
21450 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
21460 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
21470 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
21480 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
21490 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
214a0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
214b0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
214c0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
214d0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
214e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
214f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
21500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21540 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
21550 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
21560 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
21570 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
21580 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
21590 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
215a0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
215b0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
215c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
215d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
215e0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
215f0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
21600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
21610 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
21620 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
21630 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
21640 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21650 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
21660 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
21670 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
21680 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
21690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216a0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
216b0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
216c0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
216d0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
216e0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
216f0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
21700 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
21710 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
21720 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
21730 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
21740 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
21750 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
21760 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
21770 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
21780 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21790 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
217a0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
217b0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
217c0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
217d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
217e0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
217f0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
21800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
21810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21820 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
21830 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
21840 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
21850 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
21860 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
21870 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
21880 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218a0 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
218b0 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
218c0 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
218d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
218e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
218f0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
21900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21920 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
21930 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
21940 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
21950 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
21960 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21970 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
21980 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
21990 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
219a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
219b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219c0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
219d0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
219e0 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
219f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21a00 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
21a10 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
21a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
21a40 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
21a50 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
21a60 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
21a70 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
21a80 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
21a90 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
21aa0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
21ab0 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
21ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ad0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
21ae0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
21af0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
21b00 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
21b10 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
21b20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
21b30 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
21b40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
21b50 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
21b60 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
21b70 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21b80 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
21b90 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
21ba0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
21bb0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21be0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
21bf0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
21c00 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
21c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21c20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
21c30 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
21c40 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
21c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
21c60 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
21c70 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
21c80 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
21c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ca0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
21cb0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
21cc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
21ce0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
21cf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21d00 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
21d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
21d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
21d30 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
21d40 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
21d50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21d60 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21d70 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
21d80 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
21d90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21db0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
21dc0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
21dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
21de0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
21df0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
21e00 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
21e10 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
21e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
21e30 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
21e40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
21e50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
21ea0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
21eb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
21ec0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
21ed0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
21ee0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21ef0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
21f00 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
21f10 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ata.connectionCo
21f20 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
21f30 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
21f40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21f90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
21fa0 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
21fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21fc0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
21fd0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
21fe0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21ff0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
22000 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
22010 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
22020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22030 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22040 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
22050 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
22060 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
22070 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22080 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
22090 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
220a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
220e0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
220f0 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
22100 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
22110 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
22120 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
22130 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
22140 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
22160 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
22170 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
221a0 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
221b0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
221c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
221e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
221f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22240 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
22250 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
22260 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
22270 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
22280 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
22290 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
222a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
222b0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
222c0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
222d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
222e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
222f0 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
22300 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
22310 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
22320 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
22330 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
22340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22390 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
223a0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
223b0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
223c0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
223d0 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
223e0 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
223f0 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
22400 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
22410 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
22420 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
22430 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
22440 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
22450 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22460 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
22470 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
22480 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
22490 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
224a0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
224b0 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
22500 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
22510 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
22520 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
22530 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22580 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
22590 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
225a0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
225b0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
225c0 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
225d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
225e0 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
225f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
22600 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
22610 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22620 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
22630 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
22640 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
22650 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
22660 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22670 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
22680 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
226a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
226b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
226c0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
226d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
226e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
226f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22730 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
22740 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
22750 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
22760 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
22770 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
22780 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
22790 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
227a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
227b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
227c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
227d0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
227e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
227f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22800 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
22810 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
22820 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
22830 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
22840 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
22850 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
22860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
228b0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
228c0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
228d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
228e0 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
228f0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
22900 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
22910 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
22920 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
22930 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
22940 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
22950 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22960 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
229c0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
229d0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
229e0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
229f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22a00 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
22a10 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
22a20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22a30 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
22a40 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
22a50 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
22a60 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
22a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22a80 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
22a90 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
22aa0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22ab0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
22ac0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
22ad0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
22ae0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
22af0 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
22b00 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
22b10 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
22b20 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
22b30 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
22b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b50 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
22b60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22b70 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
22b80 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
22b90 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
22ba0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
22bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bc0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
22bd0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
22c00 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20  tatement: {0}", 
22c10 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
22c20 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
22c30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
22c50 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
22c60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22c70 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
22c80 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
22c90 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
22ca0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
22cb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cd0 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
22ce0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
22cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
22d20 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
22d30 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
22d40 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
22d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d60 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
22d70 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
22d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22da0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
22db0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
22dd0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
22de0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
22df0 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
22e00 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
22e10 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
22e20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
22e30 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
22e40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
22e50 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
22e60 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
22e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
22e80 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
22e90 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
22eb0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
22ec0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
22ed0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
22ee0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
22ef0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
22f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22f10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
22f20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
22f40 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
22f50 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
22f60 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f80 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
22f90 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
22fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fb0 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
22fc0 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
22fd0 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
22fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22ff0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
23000 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
23010 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
23020 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
23030 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
23040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23060 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
23070 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23080 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
23090 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
230a0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
230b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
230d0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
230e0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
230f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
23110 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
23120 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
23130 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23140 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
23150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
23160 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
23170 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
23180 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
23190 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
231a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
231b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231f0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
23200 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
23210 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
23220 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
23230 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23240 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
23250 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
23260 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
23270 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
23280 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
23290 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
232a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
232f0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
23300 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
23310 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23320 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
23330 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
23340 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23350 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
23360 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
23370 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
23380 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
23390 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
233a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
233b0 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
233c0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
233d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
233e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
233f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
23400 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23440 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
23450 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
23460 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
23470 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
23480 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
23490 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
234a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
234b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
234c0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
234d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
234e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
234f0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
23500 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
23510 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23520 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
23530 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
23540 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
23550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23590 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
235a0 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
235b0 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
235c0 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
235d0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
235e0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
235f0 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
23600 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
23610 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
23620 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
23630 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
23640 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
23650 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
23660 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23670 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
23680 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
23690 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
236a0 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
236b0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
236c0 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23710 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
23720 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
23730 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
23740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
23790 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
237a0 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
237b0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
237c0 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
237d0 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
237e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
237f0 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
23800 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
23810 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
23820 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
23840 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
23850 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
23860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
23870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23880 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
23890 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
238a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
238b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
238c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
238d0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
238e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
238f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23940 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
23950 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
23960 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
23970 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
23980 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
23990 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
239a0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
239b0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
239c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
239d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
239e0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
239f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
23a00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23a10 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
23a20 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
23a30 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
23a40 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
23a50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23a60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
23a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ab0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23ac0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
23ad0 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
23ae0 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
23af0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
23b00 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
23b10 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
23b20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
23b30 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
23b40 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
23b50 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
23b60 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
23b70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23bc0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
23bd0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
23be0 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
23bf0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
23c00 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
23c10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
23c20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23c30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
23c50 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
23c60 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
23c70 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
23c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23c90 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
23ca0 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
23cb0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
23cc0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
23cd0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cf0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
23d00 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
23d10 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
23d20 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
23d30 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
23d40 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
23d50 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
23d60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d80 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
23d90 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
23da0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
23db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dc0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
23dd0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
23de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23df0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
23e00 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c  hBackup: {0}", l
23e10 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
23e20 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
23e30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
23e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
23e50 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
23e60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23e70 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
23e80 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
23e90 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
23ea0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
23eb0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ed0 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
23ee0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
23ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23f10 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
23f20 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
23f30 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ckup(cnn, handle
23f40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23f50 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
23f60 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
23f70 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
23f80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23f90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
23fa0 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
23fb0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
23fc0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
23fd0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
23fe0 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
23ff0 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
24000 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
24010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
24020 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
24030 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
24040 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
24050 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
24060 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
24070 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
24080 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
24090 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
240a0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
240b0 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
240c0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
240d0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
240e0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
240f0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
24100 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
24110 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24130 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
24140 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
24150 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
24160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24170 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
24180 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
24190 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
241a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
241b0 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
241c0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
241d0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
241e0 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
241f0 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
24200 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
24210 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
24220 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
24230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24250 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
24260 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24270 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
24280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
24290 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
242a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
242b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242c0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
242d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
242e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
242f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24300 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
24310 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
24320 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24330 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
24340 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
24350 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
24360 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
24370 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
24380 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
24390 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
243a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243e0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
243f0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
24400 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
24410 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
24420 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24430 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
24440 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
24450 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
24460 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
24470 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
24480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
244e0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
244f0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
24500 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24510 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
24520 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
24530 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24540 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
24550 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
24560 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
24570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24580 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24590 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
245a0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
245b0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
245c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
245d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
245e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
245f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
24600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24630 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
24640 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
24650 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
24660 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
24670 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
24680 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
24690 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
246a0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
246b0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
246c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
246d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246e0 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
246f0 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
24700 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24710 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
24720 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
24730 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
24740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24780 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
24790 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48  gion SQLiteBlobH
247a0 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
247b0 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
247c0 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
247d0 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
247e0 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65  SQLite blob obje
247f0 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
24800 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
24810 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
24820 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
24830 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
24840 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24850 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
24860 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
24870 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
24880 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
24890 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
248a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
248f0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
24900 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
24910 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
24920 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24970 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
24980 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
24990 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
249a0 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  r(SQLiteBlobHand
249b0 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  le blob)..      
249c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
249d0 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c   if (blob != nul
249e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
249f0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
24a00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e    lock (blob.syn
24a30 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
24a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24a60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c         return bl
24a70 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ob.handle;..    
24a80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24a90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
24aa0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
24ab0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
24ac0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24ad0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24b20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
24b30 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
24b40 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
24b50 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
24b60 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  Ptr blob)..     
24b70 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
24b80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
24b90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24ba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
24bb0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
24bc0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24bf0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
24c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c10 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b  SetHandle(blob);
24c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24c30 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
24c40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
24c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24c90 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
24ca0 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
24cb0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
24cc0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
24cd0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
24ce0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
24cf0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
24d00 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
24d10 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
24d20 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
24d30 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
24d40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
24d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24da0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
24db0 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
24dc0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
24dd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24de0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
24df0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
24e00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24e10 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
24e20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
24e30 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
24e40 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
24e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e60 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
24e70 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
24e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24e90 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
24ea0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
24eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24ec0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
24ed0 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20  .CloseBlob(cnn, 
24ee0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
24ef0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
24f00 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
24f10 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
24f20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
24f30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
24f60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
24f70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f90 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
24fa0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
24fb0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
24fd0 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f  seBlob: {0}", lo
24fe0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
24ff0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
25000 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
25020 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
25030 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25040 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
25050 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
25060 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
25070 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
25080 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250a0 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
250b0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
250c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
250e0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
250f0 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
25100 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25120 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
25130 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
25140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25150 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25160 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
25170 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
25180 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
25190 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
251a0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
251b0 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
251c0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
251d0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
251e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
251f0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
25200 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
25210 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
25220 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
25230 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
25240 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
25250 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
25260 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
25270 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
25280 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
25290 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
252a0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
252b0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
252c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
252d0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
252e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
25300 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
25310 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
25320 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
25330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25340 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
25350 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25370 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
25380 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  ob: {0}, excepti
25390 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
253a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253b0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
253c0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
253d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
253e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253f0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
25400 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25410 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
25420 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
25430 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25440 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
25450 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
25460 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25470 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
25480 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
25490 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
254a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
254c0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
254d0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
254f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25500 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
25510 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
25520 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
25530 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25540 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
25550 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25560 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
255b0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
255c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
255d0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
255e0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
255f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25600 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
25610 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
25620 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
25630 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
25640 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
25650 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25690 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
256a0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
256b0 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
256c0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
256d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
256e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
256f0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
25700 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
25720 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
25730 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
25740 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25760 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
25770 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
25780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
257a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
257b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
257c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25800 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
25810 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
25820 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
25830 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
25840 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
25850 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25860 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
25870 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
25880 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
25890 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
258a0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
258b0 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
258c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
258d0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
258e0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
258f0 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..