System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 25dd65a196ab81983430186d33d0553966ace8c1:


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 2f 2f 2f 20  Data..      /// 
0520: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0530: 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69   /// This lock i
0540: 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63  s used to protec
0550: 74 20 73 65 76 65 72 61 6c 20 73 74 61 74 69 63  t several static
0560: 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20   fields...      
0570: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0580: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0590: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62  atic readonly ob
05a0: 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63 52  ject staticSyncR
05b0: 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
05c0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ();....      ///
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0620: 23 72 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c  #region Critical
0630: 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28   Handle Counts (
0640: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0650: 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  )..#if COUNT_HAN
0660: 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  DLE..      //.. 
0670: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
0680: 65 73 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65  ese counts repre
0690: 73 65 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e  sent the total n
06a0: 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
06b0: 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ding..      //  
06c0: 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73       (non-dispos
06d0: 65 64 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ed) CriticalHand
06e0: 6c 65 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63  le derived objec
06f0: 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  t instances..   
0700: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61     //       crea
0710: 74 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72  ted by this libr
0720: 61 72 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d  ary and are prim
0730: 61 72 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79  arily for use by
0740: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0750: 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2e   the test suite.
0760: 20 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61    These counts a
0770: 72 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62  re incremented b
0780: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  y the..      // 
0790: 20 20 20 20 20 20 61 73 73 6f 63 69 61 74 65 64        associated
07a0: 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e   constructors an
07b0: 64 20 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65  d are decremente
07c0: 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20  d upon the..    
07d0: 20 20 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65    //       succe
07e0: 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e  ssful completion
07f0: 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74   of the associat
0800: 65 64 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ed ReleaseHandle
0810: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0820: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20   methods...     
0830: 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72   //..      inter
0840: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63  nal static int c
0850: 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d  onnectionCount;.
0860: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
0870: 73 74 61 74 69 63 20 69 6e 74 20 73 74 61 74 65  static int state
0880: 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  mentCount;..    
0890: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
08a0: 63 20 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e  c int backupCoun
08b0: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
08c0: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 62 6c  al static int bl
08d0: 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69 66  obCount;..#endif
08e0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
08f0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
0950: 72 65 67 69 6f 6e 20 53 65 74 74 69 6e 67 73 20  region Settings 
0960: 52 65 61 64 20 43 6f 75 6e 74 73 20 28 44 65 62  Read Counts (Deb
0970: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a  ug Build Only)..
0980: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
0990: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
09a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64        /// This d
09b0: 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73  ictionary stores
09c0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73   the read counts
09d0: 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65   for the runtime
09e0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a   configuration..
09f0: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e        /// settin
0a00: 67 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  gs.  This inform
0a10: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65  ation is only re
0a20: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0a30: 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  iled in the..   
0a40: 20 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62     /// "Debug" b
0a50: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0a60: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0a70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0a80: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0a90: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0aa0: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 52  g, int> settingR
0ab0: 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 0d 0a 20 20  eadCounts;....  
0ac0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0b20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0b30: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
0b40: 73 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20  stores the read 
0b50: 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72  counts for the r
0b60: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
0b70: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
0b80: 73 65 74 74 69 6e 67 73 20 76 69 61 20 74 68 65  settings via the
0b90: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
0ba0: 6f 6e 20 66 69 6c 65 2e 20 20 54 68 69 73 20 69  on file.  This i
0bb0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e  nformation is on
0bc0: 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65  ly..      /// re
0bd0: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0be0: 69 6c 65 64 20 69 6e 20 74 68 65 20 22 44 65 62  iled in the "Deb
0bf0: 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ug" build config
0c00: 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  uration...      
0c10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0c20: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0c30: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
0c40: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74  string, int> set
0c50: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
0c60: 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ts;..#endif..   
0c70: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0c80: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0ce0: 6e 20 4f 74 68 65 72 20 43 6f 75 6e 74 73 20 28  n Other Counts (
0cf0: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0d00: 29 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  )..#if DEBUG..  
0d10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0d20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0d30: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
0d40: 72 65 73 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75  res miscellaneou
0d50: 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20 66 6f  s counts used fo
0d60: 72 20 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 20  r debugging..   
0d70: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
0d80: 20 20 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69    This informati
0d90: 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72  on is only recor
0da0: 64 65 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65  ded when compile
0db0: 64 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d in the..      
0dc0: 2f 2f 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c  /// "Debug" buil
0dd0: 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  d configuration.
0de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0df0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0e00: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
0e10: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
0e20: 69 6e 74 3e 20 6f 74 68 65 72 43 6f 75 6e 74 73  int> otherCounts
0e30: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
0e40: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
0e50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0e60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0ec0: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
0ed0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
0ee0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0ef0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61  ..      /// Crea
0f00: 74 65 73 20 64 69 63 74 69 6f 6e 61 72 69 65 73  tes dictionaries
0f10: 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
0f20: 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66  he read counts f
0f30: 6f 72 20 65 61 63 68 20 6f 66 0d 0a 20 20 20 20  or each of..    
0f40: 20 20 2f 2f 2f 20 74 68 65 20 72 75 6e 74 69 6d    /// the runtim
0f50: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
0f60: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 65 73 65  settings.  These
0f70: 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73 65   numbers are use
0f80: 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  d for..      ///
0f90: 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74   debugging and t
0fa0: 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20  esting purposes 
0fb0: 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  only...      ///
0fc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0fd0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
0fe0: 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65   void Initialize
0ff0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
1000: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1010: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1020: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1030: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1040: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1050: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 64  TE: Create the d
1060: 69 63 74 69 6f 6e 61 72 69 65 73 20 6f 66 20 73  ictionaries of s
1070: 74 61 74 69 73 74 69 63 73 20 74 68 61 74 20 77  tatistics that w
1080: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
1090: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 74     //       cont
10a0: 61 69 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  ain the number o
10b0: 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74  f times each set
10c0: 74 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ting value..    
10d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10e0: 20 20 20 68 61 73 20 62 65 65 6e 20 72 65 61 64     has been read
10f0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1100: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1110: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65     if (settingRe
1120: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
1130: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1140: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1150: 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63  Counts = new Dic
1160: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
1170: 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  int>();....     
1180: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1190: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
11a0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11c0: 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f  ettingFileReadCo
11d0: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
11e0: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
11f0: 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  t>();....       
1200: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
1210: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
1220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1230: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 20 3d     otherCounts =
1240: 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
1250: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d  string, int>();.
1260: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
1270: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
1280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72 65  .      /// Incre
12f0: 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64 20 63  ments the read c
1300: 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70 65  ount for the spe
1310: 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63  cified runtime c
1320: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
1330: 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 2e      /// setting.
1340: 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20    These numbers 
1350: 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62  are used for deb
1360: 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69  ugging and testi
1370: 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20 20  ng purposes..   
1380: 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20 20     /// only...  
1390: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
13b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
13c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13d0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
13e0: 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64 2e  ting being read.
13f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
1400: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
1410: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61  <param name="via
1420: 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  File">..      //
1430: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1440: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
1450: 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72 65 61  ing is being rea
1460: 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a  d from the XML..
1470: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
1480: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
1490: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14a0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
14b0: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63 72  static void Incr
14c0: 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64  ementSettingRead
14d0: 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  Count(..        
14e0: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a    string name,..
14f0: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76            bool v
1500: 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20  iaFile..        
1510: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
1520: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
1530: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
1540: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1550: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1560: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1570: 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74 61 74  OTE: Update stat
1580: 69 73 74 69 63 73 20 66 6f 72 20 74 68 69 73 20  istics for this 
1590: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d 0a  setting value...
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15c0: 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20  if (viaFile)..  
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65   if (settingFile
1600: 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75  ReadCounts != nu
1610: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1620: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1640: 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20  int count;....  
1650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1660: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1670: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 54 72  ileReadCounts.Tr
1680: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1690: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
16c0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d  leReadCounts[nam
16d0: 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d  e] = count + 1;.
16e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16f0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1710: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
1720: 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64  leReadCounts.Add
1730: 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20  (name, 1);..    
1740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1770: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1780: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1790: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
17a0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21  tingReadCounts !
17b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
17c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e0: 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a      int count;..
17f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1800: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74          if (sett
1810: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72  ingReadCounts.Tr
1820: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1830: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65         settingRe
1860: 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d  adCounts[name] =
1870: 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20   count + 1;..   
1880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1890: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b0: 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f     settingReadCo
18c0: 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31  unts.Add(name, 1
18d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
18e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1900: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1910: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
1920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
1970: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1980: 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74  /// Increments t
1990: 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 75  he specified cou
19a0: 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  nter...      ///
19b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
19c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19d0: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
19e0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
19f0: 66 20 74 68 65 20 63 6f 75 6e 74 65 72 20 62 65  f the counter be
1a00: 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e  ing incremented.
1a10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
1a20: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ram>..      publ
1a30: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
1a40: 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
1a50: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  nt(..          s
1a60: 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
1a70: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1a90: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1aa0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1ac0: 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 21 3d   (otherCounts !=
1ad0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1ae0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1af0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
1b00: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
1b10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
1b20: 74 68 65 72 43 6f 75 6e 74 73 2e 54 72 79 47 65  therCounts.TryGe
1b30: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74  tValue(name, out
1b40: 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20   count))..      
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b60: 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61 6d 65  otherCounts[name
1b70: 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a  ] = count + 1;..
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b90: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
1ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1bb0: 68 65 72 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61  herCounts.Add(na
1bc0: 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20  me, 1);..       
1bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1be0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1bf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
1c00: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23  ndregion..  }..#
1c10: 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
1c20: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
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 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
1c80: 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ion Helper Metho
1c90: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ds Static Class.
1ca0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
1cb0: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61  ..  /// This sta
1cc0: 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64  tic class provid
1cd0: 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20  es some methods 
1ce0: 74 68 61 74 20 61 72 65 20 73 68 61 72 65 64 20  that are shared 
1cf0: 62 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f  between the..  /
1d00: 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  // native librar
1d10: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64  y pre-loader and
1d20: 20 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d   other classes..
1d30: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
1d40: 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  >..  internal st
1d50: 61 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65  atic class Helpe
1d60: 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20  rMethods..  {.. 
1d70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1d80: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
1d90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1da0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c        /// This l
1db0: 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70  ock is used to p
1dc0: 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69  rotect the stati
1dd0: 63 20 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d  c <see cref="isM
1de0: 6f 6e 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a  ono" /> field...
1df0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1e00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
1e10: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
1e20: 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69  nly object stati
1e30: 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20  cSyncRoot = new 
1e40: 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20  object();....   
1e50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
1ea0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1eb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
1ec0: 73 20 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70  s type is only p
1ed0: 72 65 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e  resent when runn
1ee0: 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20  ing on Mono...  
1ef0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f00: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
1f10: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
1f20: 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e  y string MonoRun
1f30: 74 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f  timeType = "Mono
1f40: 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20  .Runtime";....  
1f50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1fa0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1fb0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65  y>..      /// Ke
1fc0: 65 70 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65  eps track of whe
1fd0: 74 68 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e  ther we are runn
1fe0: 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e  ing on Mono.  In
1ff0: 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74  itially null, it
2000: 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73   is..      /// s
2010: 65 74 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  et by the <see c
2020: 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20  ref="IsMono" /> 
2030: 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69  method on its fi
2040: 72 73 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72  rst call.  Later
2050: 2c 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  , it..      /// 
2060: 69 73 20 72 65 74 75 72 6e 65 64 20 76 65 72 62  is returned verb
2070: 61 74 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65  atim by the <see
2080: 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f   cref="IsMono" /
2090: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
20a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
20b0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
20c0: 74 61 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f  tatic bool? isMo
20d0: 6e 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  no = null;..    
20e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
20f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2140: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
2150: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
2160: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2180: 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74   Determines whet
2190: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20  her or not this 
21a0: 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e  assembly is runn
21b0: 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20  ing on Mono...  
21c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21d0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
21e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
21f0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
2200: 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20  his assembly is 
2210: 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e  running on Mono.
2220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
2230: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
2240: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
2250: 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20  l IsMono()..    
2260: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
2270: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
2280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
2290: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
22a0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
22b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 4d           if (isM
22d0: 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ono == null)..  
22e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f0: 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79      isMono = (Ty
2300: 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52  pe.GetType(MonoR
2310: 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e  untimeType) != n
2320: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
2330: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2340: 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d  n (bool)isMono;.
2350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
2360: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
2370: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2380: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2390: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
23a0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
23b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
23c0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
23d0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
23e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
23f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2440: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
2450: 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64   Internal Method
2460: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
2470: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2480: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
2490: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
24a0: 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f  ess is running o
24b0: 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e  n one of the Win
24c0: 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  dows..      /// 
24d0: 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e  [sub-]platforms.
24e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
24f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2500: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2510: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
2520: 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
2530: 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69  Windows; otherwi
2540: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  se, zero...     
2550: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2560: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
2570: 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69  static bool IsWi
2580: 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b  ndows()..      {
2590: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c 61 74  ..          Plat
25a0: 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49  formID platformI
25b0: 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  d = Environment.
25c0: 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f  OSVersion.Platfo
25d0: 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rm;....         
25e0: 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64   if ((platformId
25f0: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
2600: 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20  in32S) ||..     
2610: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
2620: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
2630: 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29  ID.Win32Windows)
2640: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
2650: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
2660: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
2670: 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20  32NT) ||..      
2680: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
2690: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
26a0: 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20  D.WinCE))..     
26b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
26d0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
26e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
26f0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
2700: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
2710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2750: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
2760: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2770: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61     /// This is a
2780: 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
2790: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
27a0: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
27b0: 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50  .Format(IFormatP
27c0: 72 6f 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f  rovider,String,O
27d0: 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74  bject[])" /> met
27e0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
27f0: 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20  On Mono, it has 
2800: 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68  to call the meth
2810: 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68  od overload with
2820: 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  out the..      /
2830: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46  // <see cref="IF
2840: 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f  ormatProvider" /
2850: 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65  > parameter, due
2860: 20 74 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e   to a bug in Mon
2870: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
2880: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2890: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28a0: 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20  "provider">..   
28b0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75     /// This is u
28c0: 73 65 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d  sed for culture-
28d0: 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74  specific formatt
28e0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
28f0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2900: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2910: 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20  "format">..     
2920: 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20   /// The format 
2930: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  string...      /
2940: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2950: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2960: 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20  me="args">..    
2970: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74    /// An array t
2980: 68 65 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f  he objects to fo
2990: 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rmat...      ///
29a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29b0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
29c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65        /// The re
29d0: 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d  sulting string..
29e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
29f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
2a00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
2a10: 69 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74  ing StringFormat
2a20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f  (..          IFo
2a30: 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f  rmatProvider pro
2a40: 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  vider,..        
2a50: 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c    string format,
2a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 61  ..          para
2a70: 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73  ms object[] args
2a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
2a90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2aa0: 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d    if (IsMono()).
2ab0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2ac0: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
2ad0: 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73  mat(format, args
2ae0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c  );..          el
2af0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2b00: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
2b10: 46 6f 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c  Format(provider,
2b20: 20 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d   format, args);.
2b30: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
2b40: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
2b50: 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
2b60: 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
2b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61  ....  #region Na
2bc0: 74 69 76 65 20 4c 69 62 72 61 72 79 20 48 65 6c  tive Library Hel
2bd0: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f  per Class..  ///
2be0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
2bf0: 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63 6c  / This static cl
2c00: 61 73 73 20 70 72 6f 76 69 64 65 73 20 61 20 74  ass provides a t
2c10: 68 69 6e 20 77 72 61 70 70 65 72 20 61 72 6f 75  hin wrapper arou
2c20: 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  nd the native li
2c30: 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61  brary..  /// loa
2c40: 64 69 6e 67 20 66 65 61 74 75 72 65 73 20 6f 66  ding features of
2c50: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
2c60: 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f  platform...  ///
2c70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69   </summary>..  i
2c80: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
2c90: 6c 61 73 73 20 4e 61 74 69 76 65 4c 69 62 72 61  lass NativeLibra
2ca0: 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20  ryHelper..  {.. 
2cb0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2cc0: 76 61 74 65 20 44 65 6c 65 67 61 74 65 73 0d 0a  vate Delegates..
2cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2ce0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
2cf0: 68 69 73 20 64 65 6c 65 67 61 74 65 20 69 73 20  his delegate is 
2d00: 75 73 65 64 20 74 6f 20 77 72 61 70 20 74 68 65  used to wrap the
2d10: 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64   concept of load
2d20: 69 6e 67 20 61 20 6e 61 74 69 76 65 0d 0a 20 20  ing a native..  
2d30: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c      /// library,
2d40: 20 62 61 73 65 64 20 6f 6e 20 61 20 66 69 6c 65   based on a file
2d50: 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65 74 75 72   name, and retur
2d60: 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64 65 64 20  ning the loaded 
2d70: 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f  module..      //
2d80: 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20  / handle...     
2d90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
2db0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
2dc0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2dd0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
2de0: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
2df0: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
2e00: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e10: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2e20: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
2e30: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
2e40: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
2e50: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
2e60: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
2e70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
2e80: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
2e90: 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65 20  rivate delegate 
2ea0: 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61  IntPtr LoadLibra
2eb0: 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  ryCallback(..   
2ec0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
2ed0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b  leName..      );
2ee0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
2ef0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
2f50: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2f60: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
2f70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2f80: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
2f90: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
2fa0: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
2fb0: 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20  rary file using 
2fc0: 74 68 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20  the Win32..     
2fd0: 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20   /// API...     
2fe0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3000: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
3010: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
3020: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
3030: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
3040: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
3050: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
3060: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
3070: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
3080: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
3090: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
30a0: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
30b0: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
30c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
30d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
30e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
30f0: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
3100: 57 69 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Win32(..        
3110: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
3120: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
3130: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3140: 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
3150: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
3160: 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  32.LoadLibrary(f
3170: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
3180: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
3190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
31e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
31f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f  AMEWORK..      /
3200: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3210: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
3220: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65   to load the spe
3230: 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69  cified native li
3240: 62 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67  brary file using
3250: 20 74 68 65 20 50 4f 53 49 58 0d 0a 20 20 20 20   the POSIX..    
3260: 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20    /// API...    
3270: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3290: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
32a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
32b0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
32c0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
32d0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
32e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
32f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3300: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3310: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
3320: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
3330: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
3340: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
3350: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
3360: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3370: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
3380: 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72  ntPtr LoadLibrar
3390: 79 50 6f 73 69 78 28 0d 0a 20 20 20 20 20 20 20  yPosix(..       
33a0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
33b0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  me..          ).
33c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
33d0: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
33e0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
33f0: 73 69 78 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20 20  six.dlopen(..   
3400: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
3410: 61 6d 65 2c 20 55 6e 73 61 66 65 4e 61 74 69 76  ame, UnsafeNativ
3420: 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 52 54  eMethodsPosix.RT
3430: 4c 44 5f 44 45 46 41 55 4c 54 29 3b 0d 0a 20 20  LD_DEFAULT);..  
3440: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
3450: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
3460: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
3470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
34c0: 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
34d0: 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ds..      /// <s
34e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
34f0: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
3500: 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65  oad the specifie
3510: 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  d native library
3520: 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   file...      //
3530: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3540: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3550: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
3560: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
3570: 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ile name of the 
3580: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74  native library t
3590: 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o load...      /
35a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
35b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
35c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
35d0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
35e0: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
35f0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
3600: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
3610: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3620: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  rns>..      publ
3630: 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
3640: 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20   LoadLibrary(.. 
3650: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
3660: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
3670: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
3680: 20 20 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69            LoadLi
3690: 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61  braryCallback ca
36a0: 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62  llback = LoadLib
36b0: 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69  raryWin32;....#i
36c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
36d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
36e0: 20 20 20 20 20 20 20 20 69 66 20 28 21 48 65 6c          if (!Hel
36f0: 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e  perMethods.IsWin
3700: 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20  dows())..       
3710: 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20         callback 
3720: 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73  = LoadLibraryPos
3730: 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ix;..#endif.... 
3740: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3750: 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d  callback(fileNam
3760: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
3770: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3780: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
3790: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
37a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
37f0: 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65  n Unmanaged Inte
3800: 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74  rop Methods Stat
3810: 69 63 20 43 6c 61 73 73 20 28 50 4f 53 49 58 29  ic Class (POSIX)
3820: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3830: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3840: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
3850: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  >..  /// This cl
3860: 61 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49  ass declares P/I
3870: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f  nvoke methods to
3880: 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 50 4f 53   call native POS
3890: 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20  IX APIs...  /// 
38a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b 53  </summary>..  [S
38b0: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
38c0: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 20  CodeSecurity].. 
38d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
38e0: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
38f0: 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 0d  iveMethodsPosix.
3900: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3950: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3960: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3970: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
3980: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
3990: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
39a0: 20 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c 6f   native Unix dlo
39b0: 70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  pen..      /// f
39c0: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
39d0: 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74  e POSIX document
39e0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
39f0: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
3a00: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
3a10: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
3a20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3a30: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3a40: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
3a50: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
3a60: 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c  of the executabl
3a70: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
3a80: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
3a90: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
3aa0: 20 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20   name="mode">.. 
3ab0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75       /// This mu
3ac0: 73 74 20 62 65 20 61 20 63 6f 6d 62 69 6e 61 74  st be a combinat
3ad0: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 69 76  ion of the indiv
3ae0: 69 64 75 61 6c 20 62 69 74 20 66 6c 61 67 73 20  idual bit flags 
3af0: 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20  RTLD_LAZY,..    
3b00: 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20    /// RTLD_NOW, 
3b10: 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64  RTLD_GLOBAL, and
3b20: 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d  /or RTLD_LOCAL..
3b30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
3b40: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
3b50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3b60: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
3b70: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
3b80: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
3b90: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
3ba0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
3bb0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3bc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
3bd0: 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e 74  __Internal", Ent
3be0: 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65  ryPoint = "dlope
3bf0: 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43  n",..          C
3c00: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
3c10: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
3c20: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
3c30: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e  Set = CharSet.An
3c40: 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42  si,..          B
3c50: 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20  estFitMapping = 
3c60: 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e  false, ThrowOnUn
3c70: 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74  mappableChar = t
3c80: 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rue,..          
3c90: 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74  SetLastError = t
3ca0: 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  rue)]..      int
3cb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3cc0: 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65  ern IntPtr dlope
3cd0: 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  n(string fileNam
3ce0: 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d  e, int mode);...
3cf0: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3d50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3d60: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
3d70: 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e  open(), bind fun
3d80: 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69  ction calls lazi
3d90: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
3da0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3db0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
3dc0: 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20  int RTLD_LAZY = 
3dd0: 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  0x1;....      //
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
3e30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3e40: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
3e50: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62  with dlopen(), b
3e60: 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  ind function cal
3e70: 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d  ls immediately..
3e80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3e90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
3ea0: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20  ernal const int 
3eb0: 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d  RTLD_NOW = 0x2;.
3ec0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f10: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
3f20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3f30: 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20  // For use with 
3f40: 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73  dlopen(), make s
3f50: 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20  ymbols globally 
3f60: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
3f70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3f80: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
3f90: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
3fa0: 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d  GLOBAL = 0x100;.
3fb0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
3fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4000: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
4010: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4020: 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20  // For use with 
4030: 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69  dlopen(), opposi
4040: 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41  te of RTLD_GLOBA
4050: 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61 75  L, and the defau
4060: 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  lt...      /// <
4070: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4080: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
4090: 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d  int RTLD_LOCAL =
40a0: 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20   0x000;....     
40b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
40c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
4100: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4110: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75  .      /// For u
4120: 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29  se with dlopen()
4130: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20 75  , the defaults u
4140: 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73  sed by this clas
4150: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
4160: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4170: 69 6e 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20  internal  const 
4180: 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54  int RTLD_DEFAULT
4190: 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54   = RTLD_NOW | RT
41a0: 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d  LD_GLOBAL;..  }.
41b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
41c0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
41d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 23 72  ////////....  #r
4220: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
4230: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
4240: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69  Static Class (Wi
4250: 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  n32)..  /// <sum
4260: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
4270: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
4280: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
4290: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
42a0: 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20   Win32 APIs...  
42b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
42c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
42d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
42e0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
42f0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
4300: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
4310: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
4320: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
4330: 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b  ethodsWin32..  {
4340: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
43a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
43b0: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
43c0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
43d0: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
43e0: 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69  ive Win32 LoadLi
43f0: 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
4400: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
4410: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
4420: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
4430: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
4440: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
4450: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
4460: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4470: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4480: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
4490: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
44a0: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
44b0: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
44c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
44d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
44e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
44f0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
4500: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
4510: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
4520: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
4530: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
4540: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50  returns>..#if !P
4550: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4560: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e  [DllImport("kern
4580: 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20  el32",..#else.. 
4590: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
45a0: 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64  "coredll",..#end
45b0: 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  if.. CallingConv
45c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
45d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70  Convention.Winap
45e0: 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  i, CharSet = Cha
45f0: 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20  rSet.Auto,..#if 
4600: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
4610: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
4620: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
4630: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
4640: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
4650: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e  har = true,..#en
4660: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53  dif..          S
4670: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
4680: 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  ue)]..      inte
4690: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
46a0: 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  rn IntPtr LoadLi
46b0: 62 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c  brary(string fil
46c0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
46d0: 20 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69  //////////....#i
4720: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
4730: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4740: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4760: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
4770: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
4780: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
4790: 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66  n32 GetSystemInf
47a0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  o..      /// fun
47b0: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
47c0: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
47d0: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
47e0: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
47f0: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
4800: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4810: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4820: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79   <param name="sy
4830: 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20  stemInfo">..    
4840: 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d    /// The system
4850: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72   information str
4860: 75 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c  ucture to be fil
4870: 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75  led in by the fu
4880: 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  nction...      /
4890: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
48a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
48b0: 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67  oredll", Calling
48c0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
48d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
48e0: 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69  inapi)]..      i
48f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4900: 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79  xtern void GetSy
4910: 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53  stemInfo(out SYS
4920: 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49  TEM_INFO systemI
4930: 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  nfo);....      /
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
4990: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
49a0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e       /// This en
49b0: 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69  umeration contai
49c0: 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20  ns the possible 
49d0: 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70  values for the p
49e0: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
49f0: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
4a00: 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79   field of the sy
4a10: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
4a20: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
4a30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4a40: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
4a50: 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72  l enum Processor
4a60: 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75  Architecture : u
4a70: 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a  short /* COMPAT:
4a80: 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20   Win32. */..    
4a90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
4aa0: 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20  ntel = 0,..     
4ab0: 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a       MIPS = 1,..
4ac0: 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20            Alpha 
4ad0: 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2,..          
4ae0: 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20  PowerPC = 3,..  
4af0: 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c          SHx = 4,
4b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20  ..          ARM 
4b10: 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 5,..          
4b20: 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20  IA64 = 6,..     
4b30: 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37       Alpha64 = 7
4b40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49  ,..          MSI
4b50: 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20  L = 8,..        
4b60: 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20    AMD64 = 9,..  
4b70: 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f          IA32_on_
4b80: 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20  Win64 = 10,..   
4b90: 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d         Unknown =
4ba0: 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d   0xFFFF..      }
4bb0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
4c10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4c20: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
4c30: 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f  re contains info
4c40: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
4c50: 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74  e current comput
4c60: 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  er. This..      
4c70: 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65  /// includes the
4c80: 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c   processor type,
4c90: 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f   page size, memo
4ca0: 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74  ry addresses, et
4cb0: 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  c...      /// </
4cc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4cd0: 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
4ce0: 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
4cf0: 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  ial)]..      int
4d00: 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53  ernal struct SYS
4d10: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
4d20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
4d30: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
4d40: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
4d50: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
4d60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
4d70: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
4d80: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
4d90: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
4da0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
4db0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
4dc0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
4dd0: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
4de0: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
4df0: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
4e00: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
4e10: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
4e20: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
4e30: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
4e40: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
4e50: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
4e60: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
4e70: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
4e80: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4e90: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
4ea0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
4eb0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
4ec0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
4ed0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
4ee0: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
4ef0: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
4f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
4f10: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
4f20: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
4f30: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
4f40: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
4f50: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
4f60: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
4f70: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
4f80: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
4f90: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
4fa0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
4fb0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
4fc0: 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65  endif..  }..  #e
4fd0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
4fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5030: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
5040: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
5050: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
5060: 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20  (SQLite)..  /// 
5070: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
5080: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
5090: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
50a0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
50b0: 74 69 76 65 20 53 51 4c 69 74 65 20 41 50 49 73  tive SQLite APIs
50c0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
50d0: 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
50e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
50f0: 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73  ORK..  [Suppress
5100: 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63  UnmanagedCodeSec
5110: 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a  urity]..#endif..
5120: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5130: 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61  c class UnsafeNa
5140: 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  tiveMethods..  {
5150: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
5160: 53 68 61 72 65 64 20 4e 61 74 69 76 65 20 53 51  Shared Native SQ
5170: 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65  Lite Library Pre
5180: 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20  -Loading Code.. 
5190: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
51a0: 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
51b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
51c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
51d0: 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f  he file extensio
51e0: 6e 20 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d  n used for dynam
51f0: 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65  ic link librarie
5200: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
5210: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5220: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
5230: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44  eadonly string D
5240: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
5250: 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20  = ".dll";....   
5260: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
52b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
52c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
52d0: 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20   file extension 
52e0: 75 73 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c  used for the XML
52f0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
5300: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
5310: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5320: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
5330: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
5340: 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e   ConfigFileExten
5350: 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22  sion = ".config"
5360: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53b0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
53c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
53d0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
53e0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c   name of the XML
53f0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
5400: 69 6c 65 20 73 70 65 63 69 66 69 63 20 74 6f 20  ile specific to 
5410: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  the..      /// S
5420: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
5430: 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  e assembly...   
5440: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5450: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
5460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
5470: 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69   string XmlConfi
5480: 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20  gFileName =..   
5490: 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e         typeof(Un
54a0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
54b0: 73 29 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44  s).Namespace + D
54c0: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20  llFileExtension 
54d0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e  +..          Con
54e0: 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  figFileExtension
54f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5550: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5560: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
5570: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 72   XML configuratr
5580: 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74  ion file token t
5590: 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c  hat will be repl
55a0: 61 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  aced with..     
55b0: 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69   /// the qualifi
55c0: 65 64 20 70 61 74 68 20 74 6f 20 74 68 65 20 64  ed path to the d
55d0: 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
55e0: 69 6e 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66  ing the XML conf
55f0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
5600: 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20   /// file...    
5610: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5620: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
5630: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
5640: 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67  string XmlConfig
5650: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d  DirectoryToken =
5660: 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72  ..          "%Pr
5670: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43  eLoadSQLite_XmlC
5680: 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79 25 22  onfigDirectory%"
5690: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
56a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
56b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
5700: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
5710: 43 6f 6e 73 74 61 6e 74 73 20 28 44 65 73 6b 74  Constants (Deskt
5720: 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c  op Framework Onl
5730: 79 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y)..#if !PLATFOR
5740: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5750: 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
5760: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5770: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 65  // This is the e
5780: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
5790: 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77  ble token that w
57a0: 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20  ill be replaced 
57b0: 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  with..      /// 
57c0: 74 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61  the qualified pa
57d0: 74 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74  th to the direct
57e0: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ory containing t
57f0: 68 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  his assembly... 
5800: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5810: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
5820: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
5830: 6c 79 20 73 74 72 69 6e 67 20 41 73 73 65 6d 62  ly string Assemb
5840: 6c 79 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e  lyDirectoryToken
5850: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25   =..          "%
5860: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73  PreLoadSQLite_As
5870: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 25  semblyDirectory%
5880: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
5890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
58e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
58f0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
5900: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
5910: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
5920: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
5930: 65 64 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20  ed with an..    
5940: 20 20 2f 2f 2f 20 61 62 62 72 65 76 69 61 74 69    /// abbreviati
5950: 6f 6e 20 6f 66 20 74 68 65 20 74 61 72 67 65 74  on of the target
5960: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
5970: 62 75 74 65 20 76 61 6c 75 65 20 61 73 73 6f 63  bute value assoc
5980: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
5990: 20 20 2f 2f 2f 20 74 68 69 73 20 61 73 73 65 6d    /// this assem
59a0: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  bly...      /// 
59b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
59c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
59d0: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
59e0: 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   TargetFramework
59f0: 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20  Token =..       
5a00: 20 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69     "%PreLoadSQLi
5a10: 74 65 5f 54 61 72 67 65 74 46 72 61 6d 65 77 6f  te_TargetFramewo
5a20: 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  rk%";..#endif.. 
5a30: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5a40: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
5aa0: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
5ab0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5ac0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5ad0: 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73   This lock is us
5ae0: 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68  ed to protect th
5af0: 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74 65  e static _SQLite
5b00: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  NativeModuleFile
5b10: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  Name,..      ///
5b20: 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
5b30: 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20  duleHandle, and 
5b40: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
5b50: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66  cturePlatforms f
5b60: 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ields...      //
5b70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5b80: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
5b90: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  ic readonly obje
5ba0: 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  ct staticSyncRoo
5bb0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
5bc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c10: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5c20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5c30: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
5c40: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
5c50: 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e  mappings between
5c60: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
5c70: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 2f  tecture..      /
5c80: 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61  // names and pla
5c90: 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68  tform names.  Th
5ca0: 65 73 65 20 6d 61 70 70 69 6e 67 73 20 61 72 65  ese mappings are
5cb0: 20 6e 6f 77 20 75 73 65 64 20 66 6f 72 20 74 77   now used for tw
5cc0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72  o..      /// pur
5cd0: 70 6f 73 65 73 2e 20 20 46 69 72 73 74 2c 20 74  poses.  First, t
5ce0: 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f 20  hey are used to 
5cf0: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65  determine if the
5d00: 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a   assembly code..
5d10: 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 20 73        /// base s
5d20: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e  hould be used in
5d30: 73 74 65 61 64 20 6f 66 20 74 68 65 20 6c 6f 63  stead of the loc
5d40: 61 74 69 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f  ation, based upo
5d50: 6e 20 77 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20  n whether one.. 
5d60: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65       /// or more
5d70: 20 6f 66 20 74 68 65 20 6e 61 6d 65 64 20 73 75   of the named su
5d80: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 65 78  b-directories ex
5d90: 69 73 74 20 77 69 74 68 69 6e 20 74 68 65 20 61  ist within the a
5da0: 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20  ssembly code..  
5db0: 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53      /// base.  S
5dc0: 65 63 6f 6e 64 2c 20 74 68 65 79 20 61 72 65 20  econd, they are 
5dd0: 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20 69  used to assist i
5de0: 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65 20 61 70  n loading the ap
5df0: 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
5e00: 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6e 74 65   /// SQLite inte
5e10: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 6e 74  rop assembly int
5e20: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  o the current pr
5e30: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
5e40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5e50: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
5e60: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
5e70: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72  ring, string> pr
5e80: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5e90: 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d  urePlatforms;...
5ea0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
5eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ef0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5f00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5f10: 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63   This is the cac
5f20: 68 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65  hed return value
5f30: 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
5f40: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
5f50: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
5f60: 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20  tory" /> method 
5f70: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61  -OR- null if tha
5f80: 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20  t method..      
5f90: 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65  /// has never re
5fa0: 74 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76  turned a valid v
5fb0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
5fc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5fd0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5fe0: 63 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 41  c string cachedA
5ff0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
6000: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
6010: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6060: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6070: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6080: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
6090: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
60a0: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
60b0: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
60c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
60d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
60e0: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
60f0: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
6100: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
6110: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
6120: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6170: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6180: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6190: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
61a0: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
61b0: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
61c0: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
61d0: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
61e0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
61f0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
6200: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
6210: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
6220: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
6230: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6240: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6250: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
6260: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  e()..      {..#i
6270: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
6280: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
6290: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
62a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
62b0: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
62c0: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
62d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
62e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
62f0: 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f  If the "No_PreLo
6300: 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f  adSQLite" enviro
6310: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
6320: 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20  s set (to..     
6330: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
6340: 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c  ything), skip al
6350: 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f  l our special co
6360: 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65  de and simply re
6370: 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  turn...         
6380: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
6390: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
63a0: 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  ue("No_PreLoadSQ
63b0: 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  Lite", null) != 
63c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
63d0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
63e0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
63f0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
6400: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
6410: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
6420: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6430: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6440: 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 73  Create the lists
6450: 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 74   of statistics t
6460: 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  hat will contain
6470: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6480: 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75       various cou
6490: 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62 75  nts used in debu
64a0: 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  gging, including
64b0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
64c0: 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20  //       number 
64d0: 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65  of times each se
64e0: 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20  tting value has 
64f0: 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20  been read...    
6500: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6510: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
6520: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e  itialize();..#en
6530: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
6540: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6550: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
6560: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
6570: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6580: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6590: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f             // TO
65a0: 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  DO: Make sure th
65b0: 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74  is list is updat
65c0: 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72  ed if the suppor
65d0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
65e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
65f0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
6600: 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20  re names and/or 
6610: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a  platform names..
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 63 68 61 6e 67 65 73 2e 0d         changes..
6640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
6650: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6660: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
6670: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
6680: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
6690: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
66c0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
66d0: 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f  Create the map o
66e0: 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  f processor arch
66f0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a  itecture names..
6700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6710: 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c    //       to pl
6720: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69  atform names usi
6730: 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73  ng a case-insens
6740: 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20  itive string..  
6750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6760: 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65  //       compare
6770: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
6780: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6790: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
67a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
67b0: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20  ePlatforms =..  
67c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67d0: 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61      new Dictiona
67e0: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
67f0: 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g>(..           
6800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
6810: 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72  tringComparer.Or
6820: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
6830: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6840: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6850: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6860: 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20  NOTE: Setup the 
6870: 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d  list of platform
6880: 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65   names associate
6890: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
68a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
68b0: 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64     the supported
68c0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
68d0: 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20  tectures...     
68e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
68f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6900: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
6910: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
6920: 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69  s.Add("x86", "Wi
6930: 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  n32");..        
6940: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
6950: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
6960: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d  latforms.Add("AM
6970: 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20  D64", "x64");.. 
6980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6990: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
69a0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
69b0: 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61  Add("IA64", "Ita
69c0: 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  nium");..       
69d0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
69e0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
69f0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
6a00: 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a  RM", "WinCE");..
6a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
6a20: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
6a30: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
6a40: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
6a50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6a60: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
6a70: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
6a80: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RY..            
6a90: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6aa0: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
6ab0: 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20  hat about other 
6ac0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
6ad0: 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ins?..          
6ae0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6af0: 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74        if (_SQLit
6b00: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
6b10: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
6b20: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
6b30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6b40: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
6b50: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  aseDirectory = n
6b60: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
6b70: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
6b80: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
6b90: 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ture = null;....
6ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bb0: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
6bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6bd0: 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65     SearchForDire
6be0: 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  ctory(..        
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6c00: 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  f baseDirectory,
6c10: 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72   ref processorAr
6c20: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
6c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6c50: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
6c60: 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d   Attempt to pre-
6c70: 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20  load the SQLite 
6c80: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72  core library (or
6c90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6ca0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74      //       int
6cb0: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61  erop assembly) a
6cc0: 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68  nd store both th
6cd0: 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20  e file name..   
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6cf0: 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69  /       and nati
6d00: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
6d10: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65   for later usage
6d20: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6d30: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6d40: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47             /* IG
6d50: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
6d60: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c              PreL
6d70: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
6d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d90: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
6da0: 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
6db0: 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6dd0: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
6de0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
6df0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
6e00: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
6e10: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
6e20: 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20  eHandle);..     
6e30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
6e40: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
6e50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
6e60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6eb0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
6ec0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6ed0: 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f  /// Combines two
6ee0: 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a   path strings...
6ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6f10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
6f20: 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h1">..      /// 
6f30: 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d  The first path -
6f40: 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  OR- null...     
6f50: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6f60: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6f70: 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20  name="path2">.. 
6f80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63       /// The sec
6f90: 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75  ond path -OR- nu
6fa0: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
6fb0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
6fc0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
6fd0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62      /// The comb
6fe0: 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67  ined path string
6ff0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f   -OR- null if bo
7000: 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  th of the origin
7010: 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f  al path..      /
7020: 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e  // strings are n
7030: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
7040: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7050: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7060: 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d   string MaybeCom
7070: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
7080: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
7090: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  1,..          st
70a0: 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20  ring path2..    
70b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
70c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
70d0: 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path1 != null)..
70e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
70f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
7100: 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath2 != null).. 
7110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7120: 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d   return Path.Com
7130: 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68  bine(path1, path
7140: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
7150: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
7160: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7170: 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20  n path1;..      
7180: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7190: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
71a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
71b0: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
71c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
71d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
71e0: 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20  ath2;..         
71f0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7210: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
7220: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
7230: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
7290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
72a0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
72b0: 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63  eturns the XML c
72c0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
72d0: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61  e name for the a
72e0: 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f  ssembly..      /
72f0: 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  // containing th
7300: 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d  e managed System
7310: 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d  .Data.SQLite com
7320: 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20  ponents...      
7330: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7340: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
7350: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7360: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
7370: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d  tion file name -
7380: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
7390: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
73a0: 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ned..      /// o
73b0: 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  r does not exist
73c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
73d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
73e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
73f0: 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69  ring GetXmlConfi
7400: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
7410: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7420: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
7430: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ;..          str
7440: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  ing fileName;...
7450: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7460: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7470: 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63  .          direc
7480: 74 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e  tory = AppDomain
7490: 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42  .CurrentDomain.B
74a0: 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  aseDirectory;.. 
74b0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
74c0: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
74d0: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
74e0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
74f0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
7500: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
7510: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
7520: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7530: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e  n fileName;..#en
7540: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
7550: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
7560: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
7570: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
7580: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
7590: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
75a0: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c  h(directory, Xml
75b0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
75c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
75d0: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
75e0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
75f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
7600: 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
7610: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
7620: 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  l;..      }.... 
7630: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7680: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7690: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
76a0: 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20 72   If necessary, r
76b0: 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70 70  eplaces all supp
76c0: 6f 72 74 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  orted XML config
76d0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b  uration file tok
76e0: 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ens..      /// w
76f0: 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69  ith their associ
7700: 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ated values...  
7710: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7720: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
7730: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
7740: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
7750: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
7760: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
7770: 6f 6e 20 66 69 6c 65 20 62 65 69 6e 67 20 72 65  on file being re
7780: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
7790: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
77a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
77b0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f  value">..      /
77c0: 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61 6c  // A setting val
77d0: 75 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ue read from the
77e0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
77f0: 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
7800: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
7810: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
7820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
7830: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70   value of the <p
7840: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61  aramref name="va
7850: 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c  lue" /> will all
7860: 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 0d 0a   supported XML..
7870: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
7880: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b  uration file tok
7890: 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e  ens replaced.  N
78a0: 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  o return value i
78b0: 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20  s reserved..    
78c0: 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74    /// to indicat
78d0: 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69  e an error.  Thi
78e0: 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20  s method cannot 
78f0: 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  fail...      ///
7900: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7910: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7920: 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65  c string Replace
7930: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b  XmlConfigFileTok
7940: 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ens(..          
7950: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
7960: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7970: 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
7980: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
7990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
79a0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
79b0: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
79c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
79d0: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
79e0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
79f0: 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  y(fileName))..  
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a20: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
7a30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a50: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
7a60: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
7a70: 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61  ctoryName(fileNa
7a80: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7aa0: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
7ab0: 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72  OrEmpty(director
7ac0: 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y))..           
7ad0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7af0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
7b00: 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a  value.Replace(..
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
7b30: 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79  lConfigDirectory
7b40: 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79  Token, directory
7b50: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7b60: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7b80: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
7b90: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
7ba0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
7bb0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
7bc0: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
7bd0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
7be0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
7bf0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
7c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7c10: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
7c20: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
7c30: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c80: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
7c90: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
7ca0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
7cb0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cd0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
7ce0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
7cf0: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
7d00: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
7d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d20: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
7d30: 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
7d40: 65 20 58 4d 4c 20 22 20 2b 0d 0a 20 20 20 20 20  e XML " +..     
7d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d60: 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66 69 67           "config
7d70: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b  uration file \"{
7d80: 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20 7b 31 7d  0}\" tokens: {1}
7d90: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7db0: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b    fileName, e));
7dc0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7de0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
7e00: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
7e10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e30: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
7e40: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7e60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7e70: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7e80: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7e90: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7ea0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
7eb0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  lue;..      }...
7ec0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
7f20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7f30: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
7f40: 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65  eturns the value
7f50: 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
7f60: 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67  d setting, using
7f70: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
7f80: 73 70 65 63 69 66 69 65 64 20 58 4d 4c 20 63 6f  specified XML co
7f90: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
7fa0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7fc0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7fd0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
7fe0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
7ff0: 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
8000: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 20  uration file to 
8010: 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  read...      ///
8020: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8030: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8040: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
8050: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
8060: 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  the setting...  
8070: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8080: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
8090: 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  am name="default
80a0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
80b0: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
80c0: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65  turned if the se
80d0: 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65  tting has not be
80e0: 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  en set explicitl
80f0: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  y..      /// or 
8100: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
8110: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
8120: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8130: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8140: 3d 22 65 78 70 61 6e 64 22 3e 0d 0a 20 20 20 20  ="expand">..    
8150: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74    /// Non-zero t
8160: 6f 20 65 78 70 61 6e 64 20 61 6e 79 20 65 6e 76  o expand any env
8170: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
8180: 65 20 72 65 66 65 72 65 6e 63 65 73 20 63 6f 6e  e references con
8190: 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20  tained in..     
81a0: 20 2f 2f 2f 20 74 68 65 20 73 65 74 74 69 6e 67   /// the setting
81b0: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
81c0: 75 72 6e 65 64 2e 20 20 54 68 69 73 20 68 61 73  urned.  This has
81d0: 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68   no effect on th
81e0: 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f  e .NET..      //
81f0: 2f 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  / Compact Framew
8200: 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ork...      /// 
8210: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
8220: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
8230: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
8240: 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  ue of the settin
8250: 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75  g -OR- the defau
8260: 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69  lt value specifi
8270: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed by..      ///
8280: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
8290: 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20  "default" /> if 
82a0: 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  it has not been 
82b0: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f  set explicitly o
82c0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  r..      /// can
82d0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
82e0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
82f0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8300: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
8310: 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67  tring GetSetting
8320: 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69  ValueViaXmlConfi
8330: 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  gFile(..        
8340: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
8350: 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
8360: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
8370: 6d 65 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  me,     /* in */
8380: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
8390: 6e 67 20 40 64 65 66 61 75 6c 74 2c 20 2f 2a 20  ng @default, /* 
83a0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
83b0: 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 20 20 20   bool expand    
83c0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
83d0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
83e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
83f0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
8400: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8410: 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c  (fileName == nul
8420: 6c 29 20 7c 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e  l) || (name == n
8430: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
8440: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8450: 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20  @default;....   
8460: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44 6f             XmlDo
8470: 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20  cument document 
8480: 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e  = new XmlDocumen
8490: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
84a0: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c        document.L
84b0: 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 20 2f  oad(fileName); /
84c0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
84e0: 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d  lement element =
84f0: 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74   document.Select
8500: 53 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20  SingleNode(..   
8510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
8520: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
8530: 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72  ingFormat(Cultur
8540: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
8550: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
8560: 20 20 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e             "/con
8570: 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65  figuration/appSe
8580: 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d  ttings/add[@key=
8590: 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20  '{0}']", name)) 
85a0: 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  as..            
85b0: 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74        XmlElement
85c0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
85d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
85e0: 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20 6e 75  f (element != nu
85f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
8600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8610: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
8620: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
8630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8640: 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61    if (element.Ha
8650: 73 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  sAttribute("valu
8660: 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
8670: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
8680: 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41  e = element.GetA
8690: 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22  ttribute("value"
86a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
86b0: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
86c0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
86d0: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
86e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
86f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8700: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8720: 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64        if (expand
8730: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8740: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
8750: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
8760: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
8770: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
8780: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
8790: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
87a0: 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69  ue = ReplaceEnvi
87b0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54  ronmentVariableT
87c0: 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 23  okens(value);..#
87d0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
87f0: 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 58 6d  alue = ReplaceXm
8800: 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e  lConfigFileToken
8810: 73 28 66 69 6c 65 4e 61 6d 65 2c 20 76 61 6c 75  s(fileName, valu
8820: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
8830: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8850: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
8860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8870: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
8880: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
8890: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
88a0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
88b0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
88c0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
88d0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
88e0: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
88f0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
8900: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
8910: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
8920: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
8930: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
8940: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
8950: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
8960: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8970: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
8980: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
8990: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
89a0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
89d0: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
89e0: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
89f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8a00: 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
8a10: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74  er failed to get
8a20: 20 73 65 74 74 69 6e 67 20 5c 22 7b 30 7d 5c 22   setting \"{0}\"
8a30: 20 76 61 6c 75 65 20 22 20 2b 0d 0a 20 20 20 20   value " +..    
8a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a50: 20 20 22 66 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66    "from XML conf
8a60: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c  iguration file \
8a70: 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61  "{1}\": {2}", na
8a80: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
8a90: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
8aa0: 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  ame, e)); /* thr
8ab0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
8ac0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8ad0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
8ae0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b00: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8b20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8b30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8b40: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
8b50: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  t;..      }.... 
8b60: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8bb0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8bc0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8bd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8be0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8bf0: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   Attempts to det
8c00: 65 72 6d 69 6e 65 20 74 68 65 20 74 61 72 67 65  ermine the targe
8c10: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
8c20: 69 62 75 74 65 20 76 61 6c 75 65 20 74 68 61 74  ibute value that
8c30: 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   is..      /// a
8c40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
8c50: 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
8c60: 61 67 65 64 20 61 73 73 65 6d 62 6c 79 2c 20 69  aged assembly, i
8c70: 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20  f applicable... 
8c80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
8c90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
8ca0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 73 73 65  param name="asse
8cb0: 6d 62 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  mbly">..      //
8cc0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61 73  / The managed as
8cd0: 73 65 6d 62 6c 79 20 74 6f 20 72 65 61 64 20 74  sembly to read t
8ce0: 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  he target framew
8cf0: 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
8d00: 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  lue..      /// f
8d10: 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rom...      /// 
8d20: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
8d30: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
8d40: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
8d50: 75 65 20 6f 66 20 74 68 65 20 74 61 72 67 65 74  ue of the target
8d60: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
8d70: 62 75 74 65 20 76 61 6c 75 65 20 66 6f 72 20 74  bute value for t
8d80: 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
8d90: 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20      /// managed 
8da0: 61 73 73 65 6d 62 6c 79 20 2d 4f 52 2d 20 6e 75  assembly -OR- nu
8db0: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
8dc0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20  be determined.  
8dd0: 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f  If this..      /
8de0: 2f 2f 20 61 73 73 65 6d 62 6c 79 20 77 61 73 20  // assembly was 
8df0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 61 20  compiled with a 
8e00: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e  version of the .
8e10: 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 70 72  NET Framework pr
8e20: 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  ior to..      //
8e30: 2f 20 76 65 72 73 69 6f 6e 20 34 2e 30 2c 20 74  / version 4.0, t
8e40: 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
8e50: 64 20 4d 41 59 20 72 65 66 6c 65 63 74 20 74 68  d MAY reflect th
8e60: 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  at version of th
8e70: 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f  e .NET..      //
8e80: 2f 20 46 72 61 6d 65 77 6f 72 6b 20 69 6e 73 74  / Framework inst
8e90: 65 61 64 20 6f 66 20 74 68 65 20 6f 6e 65 20 61  ead of the one a
8ea0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
8eb0: 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
8ec0: 61 67 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  aged..      /// 
8ed0: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
8ee0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
8ef0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
8f00: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
8f10: 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72  AssemblyTargetFr
8f20: 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20  amework(..      
8f30: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
8f40: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  embly..         
8f50: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
8f60: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
8f70: 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly != null)..  
8f80: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 4e          {..#if N
8f90: 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20  ET_40 || NET_45 
8fa0: 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45  || NET_451 || NE
8fb0: 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20  T_452 || NET_46 
8fc0: 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45  || NET_461 || NE
8fd0: 54 5f 34 36 32 0d 0a 20 20 20 20 20 20 20 20 20  T_462..         
8fe0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
8ff0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9000: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9010: 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69  (assembly.IsDefi
9020: 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ned(..          
9030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9040: 74 79 70 65 6f 66 28 54 61 72 67 65 74 46 72 61  typeof(TargetFra
9050: 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29  meworkAttribute)
9060: 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20  , false))..     
9070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9090: 20 20 20 20 20 20 54 61 72 67 65 74 46 72 61 6d        TargetFram
90a0: 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 20 74  eworkAttribute t
90b0: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d  argetFramework =
90c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
90d0: 20 20 20 20 20 20 20 20 20 20 20 20 28 54 61 72              (Tar
90e0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72  getFrameworkAttr
90f0: 69 62 75 74 65 29 0d 0a 20 20 20 20 20 20 20 20  ibute)..        
9100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9110: 20 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75    assembly.GetCu
9120: 73 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d  stomAttributes(.
9130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
9150: 79 70 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d  ypeof(TargetFram
9160: 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c  eworkAttribute),
9170: 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20   false)[0];.... 
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 72 67       return targ
91a0: 65 74 46 72 61 6d 65 77 6f 72 6b 2e 46 72 61 6d  etFramework.Fram
91b0: 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a 20 20 20 20  eworkName;..    
91c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
91d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
91e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
91f0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
9200: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9210: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
9220: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
9230: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 69 66          }..#elif
9240: 20 4e 45 54 5f 33 35 0d 0a 20 20 20 20 20 20 20   NET_35..       
9250: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 2e         return ".
9260: 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72  NETFramework,Ver
9270: 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d 0a 23 65 6c  sion=v3.5";..#el
9280: 69 66 20 4e 45 54 5f 32 30 0d 0a 20 20 20 20 20  if NET_20..     
9290: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
92a0: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
92b0: 65 72 73 69 6f 6e 3d 76 32 2e 30 22 3b 0d 0a 23  ersion=v2.0";..#
92c0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
92d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
92e0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
92f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
9300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9350: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9360: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  .      /// Accep
9370: 74 73 20 61 20 6c 6f 6e 67 20 74 61 72 67 65 74  ts a long target
9380: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
9390: 62 75 74 65 20 76 61 6c 75 65 20 61 6e 64 20 6d  bute value and m
93a0: 61 6b 65 73 20 69 74 20 69 6e 74 6f 20 61 0d 0a  akes it into a..
93b0: 20 20 20 20 20 20 2f 2f 2f 20 6d 75 63 68 20 73        /// much s
93c0: 68 6f 72 74 65 72 20 76 65 72 73 69 6f 6e 2c 20  horter version, 
93d0: 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73 65  suitable for use
93e0: 20 77 69 74 68 20 4e 75 47 65 74 20 70 61 63 6b   with NuGet pack
93f0: 61 67 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ages...      ///
9400: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9410: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
9420: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
9430: 20 20 20 2f 2f 2f 20 54 68 65 20 6c 6f 6e 67 20     /// The long 
9440: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
9450: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
9460: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
9470: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
9480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
9490: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
94a0: 20 54 68 65 20 73 68 6f 72 74 20 74 61 72 67 65   The short targe
94b0: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
94c0: 69 62 75 74 65 20 76 61 6c 75 65 20 2d 4f 52 2d  ibute value -OR-
94d0: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
94e0: 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ot..      /// be
94f0: 20 64 65 74 65 72 6d 69 6e 65 64 20 6f 72 20 63   determined or c
9500: 6f 6e 76 65 72 74 65 64 2e 0d 0a 20 20 20 20 20  onverted...     
9510: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
9520: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9530: 74 61 74 69 63 20 73 74 72 69 6e 67 20 41 62 62  tatic string Abb
9540: 72 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61  reviateTargetFra
9550: 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
9560: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d     string value.
9570: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
9580: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9590: 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
95a0: 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
95b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
95c0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
95d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
95e0: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
95f0: 65 28 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  e(".NETFramework
9600: 2c 56 65 72 73 69 6f 6e 3d 76 22 2c 20 22 6e 65  ,Version=v", "ne
9610: 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t");..          
9620: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
9630: 70 6c 61 63 65 28 22 2e 22 2c 20 53 74 72 69 6e  place(".", Strin
9640: 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d 0a 20 20 20  g.Empty);....   
9650: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
9660: 20 3d 20 76 61 6c 75 65 2e 49 6e 64 65 78 4f 66   = value.IndexOf
9670: 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (',');....      
9680: 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 21 3d      if (index !=
9690: 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20   -1)..          
96a0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
96b0: 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  e.Substring(0, i
96c0: 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ndex);....      
96d0: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
96e0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
96f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9740: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9750: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9760: 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20 72 65  If necessary, re
9770: 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70 70 6f  places all suppo
9780: 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  rted environment
9790: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73   variable tokens
97a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
97b0: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
97c0: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
97d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
97e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
97f0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
9800: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 65 74  .      /// A set
9810: 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61 64 20  ting value read 
9820: 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72 6f 6e 6d  from an environm
9830: 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20  ent variable... 
9840: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9850: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
9860: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
9870: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
9880: 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  he <paramref nam
9890: 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c  e="value" /> wil
98a0: 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 0d  l all supported.
98b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72  .      /// envir
98c0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
98d0: 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e  tokens replaced.
98e0: 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75    No return valu
98f0: 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20  e is reserved.. 
9900: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69       /// to indi
9910: 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20  cate an error.  
9920: 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e  This method cann
9930: 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20  ot fail...      
9940: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
9950: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
9960: 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c  atic string Repl
9970: 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
9980: 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20  riableTokens(.. 
9990: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
99a0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
99b0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
99c0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
99d0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
99e0: 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
99f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9a00: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
9a10: 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65  ctory = GetCache
9a20: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
9a30: 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ry();....       
9a40: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
9a50: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
9a60: 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a90: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
9aa0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ac0: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
9ad0: 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20  eplace(..       
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9af0: 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72 65 63     AssemblyDirec
9b00: 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
9b10: 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
9b20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
9b30: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
9b40: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
9b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9b60: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
9b70: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b90: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
9ba0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
9bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9bc0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
9bd0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
9be0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
9c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c10: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c30: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
9c40: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
9c50: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
9c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c80: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
9c90: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
9ca0: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
9cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
9cd0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
9ce0: 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61 73 73  d to replace ass
9cf0: 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20  embly " +..     
9d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d10: 20 20 20 20 20 20 20 20 20 22 64 69 72 65 63 74           "direct
9d20: 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c  ory token: {0}",
9d30: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
9d40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
9d50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d70: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9da0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
9db0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9dd0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9e00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
9e10: 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
9e20: 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  mbly = null;....
9e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
9e40: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
9e50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9e60: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20 3d        assembly =
9e70: 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65   Assembly.GetExe
9e80: 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29  cutingAssembly()
9e90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9ea0: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
9eb0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
9ec0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
9ed0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
9ee0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
9ef0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
9f00: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
9f10: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
9f20: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
9f30: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
9f40: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
9f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9f60: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
9f70: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f90: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
9fa0: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
9fb0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
9fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9fd0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
9fe0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
9ff0: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
a000: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a020: 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65        "pre-loade
a030: 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62 74 61  r failed to obta
a040: 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22 20 2b  in executing " +
a050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a060: 20 20 20 20 20 20 20 20 20 20 20 20 22 61 73 73              "ass
a070: 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
a080: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
a090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
a0b0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
a0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
a0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a0e0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
a0f0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
a100: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
a110: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
a120: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a130: 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 61 72        string tar
a140: 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41  getFramework = A
a150: 62 62 72 65 76 69 61 74 65 54 61 72 67 65 74 46  bbreviateTargetF
a160: 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20  ramework(..     
a170: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
a180: 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72  AssemblyTargetFr
a190: 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79  amework(assembly
a1a0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
a1b0: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
a1c0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
a1d0: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 29  argetFramework))
a1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a1f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a200: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
a210: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a230: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
a240: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
a250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a260: 20 20 20 20 20 20 20 54 61 72 67 65 74 46 72 61         TargetFra
a270: 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72  meworkToken, tar
a280: 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a  getFramework);..
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2a0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
a2b0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
a2c0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
a2d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
a2e0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
a2f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
a300: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
a310: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
a320: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
a330: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
a340: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
a350: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
a360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a370: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
a380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a390: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
a3b0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
a3c0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
a3d0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3f0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
a400: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
a410: 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
a420: 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
a430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a440: 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
a450: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70  er failed to rep
a460: 6c 61 63 65 20 74 61 72 67 65 74 20 22 20 2b 0d  lace target " +.
a470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
a490: 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a  framework token:
a4a0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
a4b0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
a4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
a4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a4e0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
a4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a520: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
a530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a540: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
a550: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
a560: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a570: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a580: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a590: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
a5a0: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
a5b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a610: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a620: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
a630: 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75  returns the valu
a640: 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
a650: 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e  ed setting, usin
a660: 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20  g the XML..     
a670: 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
a680: 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74  on file and/or t
a690: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
a6a0: 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74 68 65  ariables for the
a6b0: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
a6c0: 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e 64 2f  /// process and/
a6d0: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  or the current s
a6e0: 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76 61 69  ystem, when avai
a6f0: 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  lable...      //
a700: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a710: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a720: 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
a730: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
a740: 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d  of the setting..
a750: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
a760: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
a770: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61  param name="defa
a780: 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ult">..      ///
a790: 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
a7a0: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
a7b0: 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74   setting has not
a7c0: 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
a7d0: 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  itly..      /// 
a7e0: 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  or cannot be det
a7f0: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
a800: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
a810: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
a820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
a830: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
a840: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
a850: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
a860: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
a870: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
a880: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
a890: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
a8a0: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
a8b0: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
a8c0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
a8d0: 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66 61 75  mined.  By defau
a8e0: 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e 63  lt, all referenc
a8f0: 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a  es to existing..
a900: 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f        /// enviro
a910: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20  nment variables 
a920: 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64 65 64  will be expanded
a930: 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72 65 73   to their corres
a940: 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a  ponding values..
a950: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e        /// within
a960: 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   the value to be
a970: 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65 73 73   returned unless
a980: 20 65 69 74 68 65 72 20 74 68 65 20 22 4e 6f 5f   either the "No_
a990: 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20  Expand" or..    
a9a0: 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64    /// "No_Expand
a9b0: 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d  _<paramref name=
a9c0: 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72  "name" />" envir
a9d0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
a9e0: 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20  is set [to..    
a9f0: 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e    /// anything].
aa00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
aa10: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
aa20: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
aa30: 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56  ring GetSettingV
aa40: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
aa50: 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20   string name,   
aa60: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
aa70: 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
aa80: 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ault /* in */.. 
aa90: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
aaa0: 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
aab0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
aac0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
aad0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
aae0: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
aaf0: 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47  cial "No_SQLiteG
ab00: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 20  etSettingValue" 
ab10: 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
ab20: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ab30: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
ab40: 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74  [to anything], t
ab50: 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  his method will 
ab60: 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20  always..        
ab70: 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72    //       retur
ab80: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  n the default va
ab90: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
aba0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
abb0: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
abc0: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
abd0: 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
abe0: 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74         "No_SQLit
abf0: 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
ac00: 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ") != null)..   
ac10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ac20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
ac30: 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
ac40: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
ac50: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
ac60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aca0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
acb0: 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d   (name == null).
acc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
acd0: 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d  eturn @default;.
ace0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad30: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ad40: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
ad50: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
ad60: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  BUG..          /
ad70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
ad80: 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f  NOTE: We are abo
ad90: 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65 74  ut to read a set
ada0: 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20  ting value from 
adb0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  the environment.
adc0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
add0: 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c 79 20      or possibly 
ade0: 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e  from the XML con
adf0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b  figuration file;
ae00: 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20 20 20   create or..    
ae10: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
ae20: 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70  ncrement the app
ae30: 72 6f 70 72 69 61 74 65 20 73 74 61 74 69 73 74  ropriate statist
ae40: 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ic now...       
ae50: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ae60: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
ae70: 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43  mentSettingReadC
ae80: 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65  ount(name, false
ae90: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
aea0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
aeb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
aec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
af10: 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74   bool expand = t
af20: 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20  rue; /* SHARED: 
af30: 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44  Environment -AND
af40: 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c  - XML config fil
af50: 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  e. */....       
af60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
af70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 23 69 66 20  ////////....#if 
afb0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
afc0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
afd0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
afe0: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ue = null;....  
aff0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
b000: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
b010: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22  onmentVariable("
b020: 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e  No_Expand") != n
b030: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
b040: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b050: 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
b060: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
b070: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
b080: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
b090: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
b0a0: 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
b0b0: 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d           HelperM
b0c0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
b0d0: 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
b0e0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
b0f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
b100: 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f       "No_Expand_
b110: 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20  {0}", name)) != 
b120: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
b130: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b140: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
b150: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
b160: 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
b170: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
b180: 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
b190: 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d  riable(name);...
b1a0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
b1b0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
b1c0: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
b1d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b1e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70           if (exp
b1f0: 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  and)..          
b200: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
b210: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
b220: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
b230: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
b240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b250: 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45  value = ReplaceE
b260: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
b270: 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b  leTokens(value);
b280: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
b290: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76  .          if (v
b2a0: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b2c0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  urn value;....  
b2d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b2e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
b2f0: 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65  f the "No_SQLite
b300: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20 65  XmlConfigFile" e
b310: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
b320: 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ble is..        
b330: 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74 20 5b    //       set [
b340: 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68  to anything], th
b350: 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e  is method will N
b360: 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d 20 74  EVER read from t
b370: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
b380: 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69         XML confi
b390: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
b3a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b3b0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
b3c0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
b3d0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
b3e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b3f0: 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f   "No_SQLiteXmlCo
b400: 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20 6e 75  nfigFile") != nu
b410: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
b420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b430: 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
b440: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
b450: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
b460: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b4b0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
b4c0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
b4d0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
b4e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b4f0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61     // NOTE: We a
b500: 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64  re about to read
b510: 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65   a setting value
b520: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20   from the XML.. 
b530: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b540: 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20    configuration 
b550: 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 20  file; create or 
b560: 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70  increment the ap
b570: 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
b580: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74       //       st
b590: 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20  atistic now...  
b5a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b5b0: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
b5c0: 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
b5d0: 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20  ReadCount(name, 
b5e0: 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  true);..#endif..
b5f0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
b600: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
b610: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
b620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b650: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b660: 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53       return GetS
b670: 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d  ettingValueViaXm
b680: 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20  lConfigFile(..  
b690: 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 58              GetX
b6a0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
b6b0: 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75  (), name, @defau
b6c0: 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20  lt, expand);..  
b6d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b720: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
b730: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
b740: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
b750: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b760: 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74   string ListToSt
b770: 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e  ring(IList<strin
b780: 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20  g> list)..      
b790: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
b7a0: 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (list == null)..
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b7c0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
b7d0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
b7e0: 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e  ilder result = n
b7f0: 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ew StringBuilder
b800: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
b810: 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
b820: 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74   element in list
b830: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
b840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
b850: 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c   (element == nul
b860: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
b870: 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
b880: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b890: 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67   if (result.Leng
b8a0: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
b8b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
b8c0: 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a  t.Append(' ');..
b8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b8e0: 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c  result.Append(el
b8f0: 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  ement);..       
b900: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b910: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e    return result.
b920: 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
b930: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
b940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b980: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b990: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
b9a0: 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68  int CheckForArch
b9b0: 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
b9c0: 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20  forms(..        
b9d0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
b9e0: 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry,..          r
b9f0: 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20  ef List<string> 
ba00: 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20  matches..       
ba10: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
ba20: 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
ba30: 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
ba40: 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65        if (matche
ba50: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
ba60: 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
ba70: 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72  s = new List<str
ba80: 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ing>();....     
ba90: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
baa0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
bab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bac0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
bad0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
bae0: 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a  (directory) &&..
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68    (processorArch
bb10: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
bb20: 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  s != null))..   
bb30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb50: 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75  foreach (KeyValu
bb60: 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74  ePair<string, st
bb70: 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20  ring> pair..    
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb90: 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65          in proce
bba0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
bbb0: 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20  Platforms)..    
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
bbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bbe0: 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63         if (Direc
bbf0: 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62  tory.Exists(Mayb
bc00: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
bc10: 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79  ectory, pair.Key
bc20: 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
bc30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc50: 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
bc60: 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a  Add(pair.Key);..
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc80: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
bc90: 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
bca0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcc0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
bcd0: 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b  ue = pair.Value;
bce0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bcf0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
bd00: 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
bd30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bd40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44             if (D
bd50: 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28  irectory.Exists(
bd60: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
bd70: 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75  (directory, valu
bd80: 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e)))..          
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdb0: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
bdc0: 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20  .Add(value);..  
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bde0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b          result++
bdf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
be00: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
be10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
be20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
be30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
be40: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
be50: 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
be60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
beb0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
bec0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
bed0: 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79  ol CheckAssembly
bee0: 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20  CodeBase(..     
bef0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
bf00: 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20  sembly,..       
bf10: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69     ref string fi
bf20: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
bf30: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
bf40: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
bf50: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bf60: 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
bf70: 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf90: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
bfa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bfb0: 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20  string codeBase 
bfc0: 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42  = assembly.CodeB
bfd0: 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ase;....        
bfe0: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
bff0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63  .IsNullOrEmpty(c
c000: 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20  odeBase))..     
c010: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c020: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
c030: 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20              Uri 
c040: 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f  uri = new Uri(co
c050: 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20  deBase);..      
c060: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
c070: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75  ocalFileName = u
c080: 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d  ri.LocalPath;...
c090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
c0a0: 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
c0b0: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d  localFileName)).
c0c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c0d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
c0e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c0f0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
c100: 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
c110: 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20  ectoryName(..   
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
c130: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f  ocalFileName); /
c140: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
c150: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
c160: 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ng xmlConfigFile
c170: 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62  Name = MaybeComb
c180: 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
c190: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
c1a0: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
c1b0: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c1d0: 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43  File.Exists(xmlC
c1e0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d  onfigFileName)).
c1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
c200: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
c210: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
c220: 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
c230: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
c240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c250: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c260: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
c270: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
c280: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
c290: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
c2c0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
c2f0: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
c300: 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63  ader found XML c
c310: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c320: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
c330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c340: 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
c350: 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
c360: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
c370: 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c390: 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67         xmlConfig
c3a0: 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74  FileName)); /* t
c3b0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
c3c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3e0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
c3f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c410: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
c420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c430: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
c440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c450: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
c460: 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
c490: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
c4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c  .              L
c4b0: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
c4c0: 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  hes = null;.... 
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c4e0: 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65  (CheckForArchite
c4f0: 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72  cturesAndPlatfor
c500: 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65  ms(directory, re
c510: 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d  f matches) > 0).
c520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
c530: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
c540: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
c550: 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
c560: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
c570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c580: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c590: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
c5a0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
c5b0: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
c5c0: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5e0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
c5f0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c610: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
c620: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
c630: 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76  ader found nativ
c640: 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  e sub-directorie
c650: 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  s " +..         
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c670: 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
c680: 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
c690: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
c6a0: 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
c6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6c0: 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72         ListToStr
c6d0: 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20  ing(matches))); 
c6e0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c710: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c740: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
c750: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
c760: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
c770: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
c780: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
c790: 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
c7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c7b0: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
c7c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c7d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c7e0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
c7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
c800: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
c810: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
c820: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
c830: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
c840: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
c850: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
c860: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
c870: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
c880: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
c890: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
c8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
c8b0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
c8c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c8d0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
c8e0: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
c8f0: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
c900: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
c910: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
c920: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
c930: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
c950: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
c960: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
c970: 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73  o check code bas
c980: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
c990: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f               "fo
c9a0: 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
c9b0: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
c9c0: 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
c9d0: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
c9e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c9f0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
ca00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca20: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
ca30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
ca40: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
ca50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ca60: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
ca70: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
ca80: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
ca90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
caa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cad0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
cae0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
caf0: 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20   /// Resets the 
cb00: 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20  cached assembly 
cb10: 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65 2c  directory value,
cb20: 20 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68   thus forcing th
cb30: 65 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f 2f  e next..      //
cb40: 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63  / call to <see c
cb50: 72 65 66 3d 22 47 65 74 43 61 63 68 65 64 41 73  ref="GetCachedAs
cb60: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
cb70: 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65   /> method to re
cb80: 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70  ly..      /// up
cb90: 6f 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  on the <see cref
cba0: 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
cbb0: 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
cbc0: 64 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a  d to fetch the..
cbd0: 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62        /// assemb
cbe0: 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
cbf0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
cc00: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
cc10: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
cc20: 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
cc30: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
cc40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cc50: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
cc60: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
cc70: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
cc80: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
cc90: 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
cca0: 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
ccb0: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
ccc0: 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory");..#endif..
ccd0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
cce0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
ccf0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
cd00: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
cd10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cd20: 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62      cachedAssemb
cd30: 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  lyDirectory = nu
cd40: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
cd50: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
cd60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
cd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
cdb0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
cdc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
cdd0: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
cde0: 20 74 68 65 20 63 61 63 68 65 64 20 64 69 72 65   the cached dire
cdf0: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
ce00: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
ce10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 69 6e  ..      /// bein
ce20: 67 20 65 78 65 63 75 74 65 64 2c 20 69 66 20 61  g executed, if a
ce30: 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74 68  vailable.  If th
ce40: 65 20 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c  e cached assembl
ce50: 79 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75  y directory valu
ce60: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  e..      /// is 
ce70: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2c 20 74  not available, t
ce80: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
ce90: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
cea0: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
ceb0: 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
cec0: 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
ced0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72  the assembly dir
cee0: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
cef0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
cf00: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
cf10: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
cf20: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
cf30: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
cf40: 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65  rently being exe
cf50: 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  cuted -OR- null 
cf60: 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74  if..      /// it
cf70: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
cf80: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
cf90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
cfa0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
cfb0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63  ic string GetCac
cfc0: 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
cfd0: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
cfe0: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
cff0: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
d000: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
d010: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
d020: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
d030: 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
d040: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
d050: 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23  yDirectory");..#
d060: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
d070: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
d080: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
d090: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
d0a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d0b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
d0c0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
d0d0: 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
d0e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d0f0: 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64     return cached
d100: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
d110: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
d120: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
d130: 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
d140: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
d150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
d160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
d1b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d1c0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
d1d0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
d1e0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
d1f0: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
d200: 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
d210: 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
d220: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d230: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d240: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
d250: 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
d260: 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
d270: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
d280: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
d290: 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
d2a0: 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
d2b0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
d2c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
d2d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
d2e0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
d2f0: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
d300: 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
d310: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
d320: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
d330: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
d340: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
d350: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
d360: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
d370: 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  d_GetAssemblyDir
d380: 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
d390: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
d3a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
d3b0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
d3c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d3d0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
d3e0: 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
d3f0: 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
d400: 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
d410: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
d420: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
d430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d440: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
d450: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d460: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
d470: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
d480: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
d490: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d4a0: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
d4b0: 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e  lyName assemblyN
d4c0: 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47  ame = assembly.G
d4d0: 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  etName();....   
d4e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
d4f0: 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
d500: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
d510: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
d520: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
d530: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
d540: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f   assemblyName.Co
d550: 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a  deBase;..#else..
d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d570: 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79   (!CheckAssembly
d580: 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c  CodeBase(assembl
d590: 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29  y, ref fileName)
d5a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d5b0: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
d5c0: 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f  assembly.Locatio
d5d0: 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  n;..#endif....  
d5e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d5f0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
d600: 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d  mpty(fileName)).
d610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d620: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
d630: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d640: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
d650: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
d660: 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61  ctoryName(fileNa
d670: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
d680: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
d690: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
d6a0: 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20  irectory))..    
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d6c0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
d6e0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
d6f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d710: 20 20 20 20 20 20 63 61 63 68 65 64 41 73 73 65        cachedAsse
d720: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
d730: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
d740: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d750: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d760: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
d770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
d780: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
d790: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
d7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
d7b0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
d7c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
d7d0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
d7e0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
d7f0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
d800: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
d810: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
d830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d840: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d850: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
d860: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
d870: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
d880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d890: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
d8a0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
d8b0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
d8c0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
d8d0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
d8e0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
d8f0: 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22 20  get directory " 
d900: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
d910: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
d920: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
d930: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
d940: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
d950: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
d960: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
d970: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
d980: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d9a0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
d9b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
d9c0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
d9d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
d9e0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
d9f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
da00: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
da10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
da60: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
da70: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
da80: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
da90: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
daa0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
dab0: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
dac0: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
dad0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
dae0: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
daf0: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
db00: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
db10: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
db20: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
db30: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
db40: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
db50: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
db60: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
db70: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
db80: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
db90: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
dba0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
dbb0: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
dbc0: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
dbd0: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
dbe0: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
dbf0: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
dc00: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
dc10: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
dc20: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
dc30: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
dc40: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
dc50: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
dc60: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
dc70: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
dc80: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
dc90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
dca0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
dcb0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
dcc0: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
dcd0: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
dce0: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
dcf0: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
dd00: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
dd10: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
dd20: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
dd30: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
dd40: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
dd50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
dd60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
dd70: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
dd80: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
dd90: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
dda0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
ddb0: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
ddc0: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
ddd0: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
dde0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ddf0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
de00: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
de10: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
de20: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
de30: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
de40: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
de50: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
de60: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
de70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
deb0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
dec0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
ded0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
dee0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
def0: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
df00: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
df10: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
df20: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
df30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
df40: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
df50: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
df60: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
df70: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
df80: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
df90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfd0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
dfe0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
dff0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
e000: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
e010: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
e020: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
e030: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
e040: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
e050: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
e060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e070: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
e080: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
e090: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
e0a0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
e0b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
e0c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
e0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e110: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
e120: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e130: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
e140: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
e150: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
e160: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
e170: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
e180: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
e190: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
e1a0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
e1b0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
e1c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e1d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
e1e0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
e1f0: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
e200: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
e210: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
e220: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
e230: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
e240: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
e250: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
e260: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
e270: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
e280: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
e290: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
e2a0: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
e2b0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
e2c0: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
e2d0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
e2e0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
e2f0: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
e300: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
e310: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
e320: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
e330: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
e340: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
e350: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
e360: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
e370: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e380: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
e390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
e3a0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
e3b0: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
e3c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
e420: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e430: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
e440: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
e450: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
e460: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
e470: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
e480: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
e490: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
e4a0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
e4b0: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
e4c0: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
e4d0: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
e4e0: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
e4f0: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
e500: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e510: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
e520: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
e530: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
e540: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
e550: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
e560: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
e570: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
e580: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
e590: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
e5a0: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
e5b0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
e5c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
e5d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
e5e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
e5f0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
e600: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
e610: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
e620: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
e630: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
e640: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
e650: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
e660: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
e670: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
e680: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
e690: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
e6a0: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
e6b0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
e6c0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
e6d0: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
e6e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
e6f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
e700: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
e710: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
e720: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
e730: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
e740: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
e750: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
e760: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
e770: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
e780: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
e790: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
e7a0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
e7b0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
e7c0: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
e7d0: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
e7e0: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
e7f0: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
e800: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
e810: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
e820: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
e830: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
e840: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
e850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e860: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
e870: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
e880: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
e890: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
e8a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e8b0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
e8c0: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
e8d0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
e8e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
e8f0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
e900: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
e910: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
e920: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
e930: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
e940: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e950: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
e960: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
e970: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
e980: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
e990: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e9a0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
e9b0: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
e9c0: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
e9d0: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
e9e0: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
e9f0: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ea10: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
ea20: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ea30: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
ea40: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
ea50: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
ea60: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
ea70: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
ea80: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
ea90: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
eaa0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
eab0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
eac0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
ead0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
eae0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
eaf0: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
eb00: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
eb10: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
eb20: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
eb30: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
eb40: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
eb50: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
eb60: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
eb70: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
eb80: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
eb90: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
eba0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ebb0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
ebc0: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
ebd0: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
ebe0: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
ebf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
ec00: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ec10: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
ec20: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
ec30: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
ec40: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
ec50: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
ec60: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
ec70: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
ec80: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
ec90: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
eca0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
ecb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ecc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
ecd0: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
ece0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ecf0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
ed00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
ed10: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
ed20: 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
ed30: 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ed50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ed60: 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
ed70: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed90: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
eda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
edb0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
edc0: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
edd0: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
ede0: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
ee00: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
ee10: 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
ee20: 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee40: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
ee50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ee60: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
ee80: 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
ee90: 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
eea0: 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
eeb0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
eec0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
eed0: 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
eee0: 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
eef0: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
ef00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef10: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
ef20: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
ef30: 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
ef40: 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
ef50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ef60: 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
ef70: 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
ef80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ef90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
efa0: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
efb0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
efc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efd0: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
efe0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
eff0: 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
f000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f010: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
f020: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f040: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
f050: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
f060: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
f070: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
f080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f090: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
f0a0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
f0b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0d0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
f0e0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
f0f0: 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
f100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f120: 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
f130: 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
f140: 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
f150: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f170: 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
f180: 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
f190: 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
f1a0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
f1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1c0: 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
f1d0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
f210: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
f220: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f240: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
f250: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f270: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f290: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
f2a0: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
f2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2c0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
f2d0: 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
f2e0: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
f2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f300: 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
f310: 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
f320: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f340: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
f350: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f360: 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
f370: 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
f380: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
f390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
f3e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
f3f0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
f400: 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
f410: 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
f420: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
f430: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
f440: 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
f450: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
f460: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
f470: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
f480: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
f490: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
f4a0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
f4b0: 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
f4c0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
f4d0: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
f4e0: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
f4f0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
f500: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f510: 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
f520: 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
f530: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
f540: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
f550: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
f560: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
f570: 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
f580: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
f590: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f5a0: 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
f5b0: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
f5c0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
f5d0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
f5e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
f5f0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
f600: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
f610: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
f620: 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
f630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
f640: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
f650: 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
f660: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
f670: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
f680: 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
f690: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f6a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f6b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f6c0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
f6d0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
f6e0: 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
f6f0: 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
f700: 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
f710: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
f720: 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
f730: 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
f740: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
f750: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
f760: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
f770: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
f780: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
f790: 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
f7a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
f7b0: 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
f7c0: 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
f7d0: 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
f7e0: 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
f7f0: 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
f800: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
f810: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f820: 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
f830: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
f840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f850: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
f860: 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
f870: 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
f880: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
f890: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f8a0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
f8b0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
f8c0: 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
f8d0: 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
f8e0: 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f900: 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
f910: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
f920: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
f930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
f940: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
f950: 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
f960: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
f970: 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
f980: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
f990: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
f9a0: 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
f9b0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f9c0: 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
f9d0: 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
f9e0: 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
f9f0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
fa00: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
fa10: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
fa20: 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
fa30: 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
fa40: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
fa50: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
fa60: 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
fa70: 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
fa80: 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
fa90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
faa0: 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
fab0: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
fac0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
fad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
fb30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
fb40: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
fb50: 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
fb60: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
fb70: 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
fb80: 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
fb90: 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
fba0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
fbb0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
fbc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
fbd0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
fbe0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
fbf0: 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
fc00: 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
fc10: 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
fc20: 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
fc30: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
fc40: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
fc50: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
fc60: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
fc70: 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
fc80: 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
fc90: 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
fca0: 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
fcb0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
fcc0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
fcd0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
fce0: 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
fcf0: 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
fd00: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
fd10: 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
fd20: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
fd30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
fd40: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
fd50: 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
fd60: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
fd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
fd80: 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
fd90: 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdc0: 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
fdd0: 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
fde0: 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe00: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
fe10: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
fe20: 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
fe30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
fe40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fe50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
fe60: 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
fe70: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
fe90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
fea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
feb0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
fec0: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
fed0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
ff30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ff40: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
ff50: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
ff60: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
ff70: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
ff80: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
ff90: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
ffa0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ffb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
ffc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
ffd0: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
ffe0: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
fff0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
10000 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
10010 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
10020 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
10030 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
10040 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
10050 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
10060 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
10070 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
10080 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
10090 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
100a0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
100b0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
100c0 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
100d0 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
100e0 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
100f0 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
10100 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
10110 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
10120 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
10130 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
10140 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
10150 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
10160 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
10170 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
10180 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
10190 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
101b0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
101c0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
101d0 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
101e0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
101f0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
10200 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
10210 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10220 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
10230 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
10240 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10250 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
10260 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
10270 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
10280 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10290 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
102a0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
102b0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
102c0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
102d0 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
102e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
102f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10330 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10340 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10350 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
10360 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
10370 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
10380 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
10390 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
103a0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
103b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
103c0 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
103d0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
103e0 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
103f0 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
10400 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
10410 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
10420 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
10430 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
10440 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
10450 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
10460 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
10470 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
10480 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
10490 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
104a0 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
104b0 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
104c0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
104d0 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
104e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
104f0 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
10500 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
10510 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
10520 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
10530 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
10540 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
10550 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
10560 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
10570 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10580 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
10590 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
105a0 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
105b0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
105c0 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
105d0 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
105e0 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
105f0 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
10600 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
10610 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
10620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
10630 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
10640 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
10650 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
10660 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10670 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
10680 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
10690 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
106a0 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
106b0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
106c0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
106d0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
106e0 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
106f0 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
10700 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10710 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
10720 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
10730 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
10740 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
10750 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
10760 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
10780 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
10790 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
107a0 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
107b0 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
107c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
107d0 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
107e0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
107f0 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
10800 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
10810 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10820 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
10830 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
10840 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
10850 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
10860 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
10870 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
10880 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
10890 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
108a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
108b0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
108c0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
108d0 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
108e0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
108f0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
10900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10910 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
10920 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10930 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
10950 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
10960 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
10970 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
10980 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
10990 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
109a0 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
109b0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
109c0 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
109d0 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
109e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
109f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a00 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
10a10 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
10a20 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a40 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
10a50 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
10a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a70 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
10a80 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
10a90 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
10aa0 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
10ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ac0 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
10ad0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
10ae0 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
10af0 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
10b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b10 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
10b20 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
10b30 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
10b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b50 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
10b60 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
10b70 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
10b80 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ba0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
10bb0 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
10bc0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
10bd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10be0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
10bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c10 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
10c20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10c30 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
10c40 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
10c50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
10c60 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
10c70 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
10c80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10c90 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
10ca0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
10cb0 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
10cc0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
10cd0 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
10ce0 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
10d00 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
10d10 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
10d20 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
10d30 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
10d40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10d50 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
10d60 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
10d70 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
10d80 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10d90 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
10da0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
10dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10dd0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
10de0 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
10df0 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
10e00 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
10e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
10e30 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
10e40 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
10e50 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e70 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
10e80 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
10e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ea0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10eb0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
10ec0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
10ed0 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  32.SYSTEM_INFO s
10ee0 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20  ystemInfo;....  
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f00 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
10f10 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
10f20 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
10f30 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
10f40 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
10f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f60 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
10f70 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
10f80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10f90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
10fa0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
10fb0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
10fc0 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66  n32.GetSystemInf
10fd0 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
10fe0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10ff0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11010 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
11020 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
11030 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
11040 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
11050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11060 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11070 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
11080 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
11090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110a0 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77      systemInfo.w
110b0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
110c0 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
110d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
110e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
110f0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
11100 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11110 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
11120 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
11130 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11140 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
11150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
11160 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
11170 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
11180 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54  empty string.  T
11190 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74  his will prevent
111a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
111b0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c  //       the cal
111c0 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d  ling method from
111d0 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69   considering thi
111e0 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d  s method call a.
111f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
11200 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65  /       "failure
11210 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "...            
11220 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
11230 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
11240 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69  hitecture = Stri
11250 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
11260 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
11270 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
11280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
112d0 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
112e0 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
112f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
11300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
11350 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11360 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74       /// Given t
11370 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
11380 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72  hitecture, retur
11390 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
113a0 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  he platform...  
113b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
113c0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
113d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
113e0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
113f0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
11400 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
11410 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74  itecture to be t
11420 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70  ranslated to a p
11430 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
11440 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
11450 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
11460 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
11470 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  / The platform n
11480 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  ame for the spec
11490 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
114a0 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52  architecture -OR
114b0 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  - null..      //
114c0 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  / if it cannot b
114d0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
114e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
114f0 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
11500 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
11510 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
11520 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
11530 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
11540 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20  hitecture /* in 
11550 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
11560 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
11570 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
11580 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
11590 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
115a0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
115b0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
115c0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
115d0 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
115e0 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
115f0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
11600 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
11610 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
11620 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
11630 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
11640 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
11650 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
11660 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11670 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
11680 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
11690 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116b0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
116c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116d0 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
116e0 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
116f0 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
11700 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
11710 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56  latforms.TryGetV
11720 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
11730 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
11740 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11750 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d  re, out platform
11760 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
11770 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11780 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11790 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  n platformName;.
117a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
117b0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
117c0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
117d0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
117e0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
117f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11830 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
11840 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11850 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
11860 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
11870 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62  SQLite library b
11880 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ased on the spec
11890 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
118a0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70   directory and p
118b0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
118c0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
118d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
118e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
118f0 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
11900 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
11910 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
11920 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20  ry to use, null 
11930 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
11940 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
11950 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  of..      /// th
11960 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
11970 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20  ation domain).  
11980 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73  This directory s
11990 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68  hould contain th
119a0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
119b0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
119c0 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62  ure specific sub
119d0 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20  -directories... 
119e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
119f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
11a00 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
11a10 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
11a20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
11a30 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65   requested proce
11a40 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
11a50 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
11a60 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20  ult (the..      
11a70 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
11a80 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
11a90 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
11aa0 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72  s).  This caller
11ab0 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
11ac0 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73  // almost always
11ad0 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f   specify null fo
11ae0 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  r this parameter
11af0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
11b00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
11b10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
11b20 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
11b30 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
11b40 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61  The candidate na
11b50 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
11b60 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69   name to load wi
11b70 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72  ll be stored her
11b80 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  e,..      /// if
11b90 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
11ba0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11bb0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
11bc0 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f  m name="nativeMo
11bd0 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20  duleHandle">..  
11be0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
11bf0 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
11c00 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
11c10 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c  LoadLibrary will
11c20 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20   be stored..    
11c30 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e    /// here, if n
11c40 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20  ecessary.  This 
11c50 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e  value will be In
11c60 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65  tPtr.Zero if the
11c70 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20   call to..      
11c80 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20  /// LoadLibrary 
11c90 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  fails...      //
11ca0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11cb0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
11cc0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
11cd0 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
11ce0 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61  e module was loa
11cf0 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ded successfully
11d00 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
11d10 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
11d20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
11d30 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
11d40 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  te static bool P
11d50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
11d60 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
11d70 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
11d80 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
11d90 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
11da0 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
11db0 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20  rArchitecture,  
11dc0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
11dd0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
11de0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
11df0 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  eName, /* out */
11e00 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
11e10 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64  IntPtr nativeMod
11e20 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20  uleHandle    /* 
11e30 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
11e40 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
11e50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11e60 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
11e70 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
11e80 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
11e90 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
11ea0 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20  default..       
11eb0 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65     //       (i.e
11ec0 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74  . attempt to aut
11ed0 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63  omatically detec
11ee0 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20  t it)...        
11ef0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
11f00 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
11f10 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
11f20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
11f30 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
11f40 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
11f50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
11f60 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
11f70 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
11f80 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
11f90 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
11fa0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
11fb0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
11fc0 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
11fd0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11fe0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11ff0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
12000 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12010 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72    // NOTE: Deter
12020 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69  mine the base fi
12030 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
12040 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
12050 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
12060 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68    //       If th
12070 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20  is is not known 
12080 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77  by this class, w
12090 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
120a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
120b0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
120c0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
120d0 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  = GetNativeLibra
120e0 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
120f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
12100 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
12110 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12120 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
12130 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
12140 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12150 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
12160 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
12170 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
12180 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
12190 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
121a0 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
121b0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
121c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
121d0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
121e0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
121f0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
12200 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63  nePath(baseDirec
12210 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
12220 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c       fileNameOnl
12230 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
12240 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
12250 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
12260 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12270 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
12280 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12290 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
122a0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
122b0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
122c0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
122d0 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
122e0 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
122f0 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
12300 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
12310 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
12320 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
12330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
12340 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
12350 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
12360 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
12370 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12380 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
12390 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
123a0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
123b0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
123c0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
123d0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
123e0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
123f0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
12400 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
12410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12420 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
12430 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12440 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
12450 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
12460 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
12470 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
12480 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
12490 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
124a0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
124b0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
124c0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
124d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
124e0 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
124f0 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
12500 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
12510 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
12520 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
12530 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
12540 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
12550 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
12560 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
12570 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12580 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
12590 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
125a0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
125b0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
125c0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
125d0 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
125e0 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
125f0 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
12600 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
12610 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12620 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
12630 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
12640 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
12650 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12670 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
12680 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
12690 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
126a0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
126b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
126c0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
126d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
126e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
126f0 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
12700 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
12710 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
12720 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
12730 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12740 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12750 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
12760 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
12770 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
12780 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
12790 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
127a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
127b0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
127c0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
127d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
127f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12800 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12810 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
12820 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
12830 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
12840 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
12850 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
12860 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
12870 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
12880 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
12890 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
128a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
128b0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
128c0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
128d0 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
128e0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
128f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12900 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
12910 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
12920 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
12930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12940 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12950 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
12960 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
12970 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
12980 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
12990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
129a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
129b0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
129c0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
129e0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
129f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12a00 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12a10 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
12a20 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
12a30 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
12a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12a70 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
12a80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
12a90 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79  TE: Show exactly
12aa0 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72   where we are tr
12ab0 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65  ying to load the
12ac0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
12ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
12ae0 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
12af0 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  ry from...      
12b00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12b30 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
12b40 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b60 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
12b70 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
12b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12b90 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
12ba0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
12bb0 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  er is trying to 
12bc0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
12bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12be0 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
12bf0 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e  ibrary \"{0}\"..
12c00 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20  .", fileName)); 
12c10 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
12c20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12c30 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
12c40 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
12c50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12c60 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
12c70 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
12c80 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
12c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12ca0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12cb0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
12cc0 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
12cd0 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
12ce0 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
12cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12d00 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
12d10 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
12d20 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
12d30 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
12d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d50 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
12d60 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20  w an exception. 
12d70 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74   This must use t
12d80 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
12d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12da0 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20         P/Invoke 
12db0 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63  method for the c
12dc0 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67  urrent operating
12dd0 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20   system...      
12de0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12df0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
12e00 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
12e10 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
12e20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
12e30 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e  ModuleHandle = N
12e40 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
12e50 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  er.LoadLibrary(f
12e60 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
12e70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12e80 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
12e90 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
12ea0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
12eb0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
12ec0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
12ed0 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
12ee0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
12ef0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
12f00 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
12f10 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
12f20 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
12f30 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
12f40 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
12f50 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
12f60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12f70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12f90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12fa0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
12fb0 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
12fc0 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
12fd0 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
12fe0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13000 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
13010 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
13020 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
13030 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13060 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
13070 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
13080 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
13090 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
130a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
130b0 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
130c0 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
130d0 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
130e0 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
130f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13100 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
13110 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13130 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13140 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
13150 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
13160 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
13170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13180 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
13190 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
131a0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
131b0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
131c0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
131d0 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
131e0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
131f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13200 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
13210 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
13220 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
13230 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13250 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
13260 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
13270 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
13280 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13290 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
132a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
132b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132c0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
132d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
132e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
132f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13300 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
13310 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
13320 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
13330 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13340 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13390 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
133a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
133b0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
133c0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
133d0 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
133e0 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
133f0 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
13400 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
13410 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
13420 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
13430 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
13440 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
13450 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
13460 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
13470 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
13480 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
13490 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
134a0 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
134b0 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
134c0 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
134d0 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
134e0 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
134f0 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
13500 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
13510 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
13520 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
13530 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
13540 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
13550 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
13560 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
13570 65 2e 49 6e 74 65 72 6f 70 2e 31 30 36 2e 64 6c  e.Interop.106.dl
13580 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
13590 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
135a0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
135b0 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
135c0 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
135d0 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
135e0 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
135f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
13600 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
13610 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
13620 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
13630 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
13640 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
13650 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
13660 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
13670 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
13680 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
13690 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
136a0 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
136b0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
136c0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
136d0 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
136e0 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
136f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
13700 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
13710 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
13720 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
13730 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
13740 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
13750 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
13760 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
13770 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
13780 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
13790 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
137a0 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
137b0 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
137c0 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
137d0 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
137e0 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
137f0 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
13800 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
13810 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
13820 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
13830 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
13840 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
13850 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
13860 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
13870 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
13880 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
13890 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
138a0 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
138b0 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
138c0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
138d0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
138e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
138f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13900 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13910 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
13920 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
13930 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
13940 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
13950 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
13960 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13970 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
13980 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13990 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
139a0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
139b0 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
139c0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
139d0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
139e0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
139f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13a00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
13a10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13a20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
13a30 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
13a40 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
13a50 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
13a60 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
13a70 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
13a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13a90 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
13aa0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13ab0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13ac0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
13ad0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
13ae0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
13af0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
13b00 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
13b10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13b20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13b30 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13b40 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
13b50 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
13b60 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
13b70 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
13b80 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
13b90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13ba0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
13bb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13bc0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
13bd0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
13be0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
13bf0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
13c00 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
13c10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13c20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
13c30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13c40 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13c50 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
13c60 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
13c70 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13c80 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
13c90 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
13ca0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13cb0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
13cc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13cd0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
13ce0 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
13cf0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
13d00 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
13d10 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
13d20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13d30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
13d40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13d50 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
13d60 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
13d70 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
13d80 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
13d90 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
13da0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
13db0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13dc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
13dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13de0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
13df0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
13e00 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
13e10 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
13e20 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
13e30 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
13e40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13e50 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
13e60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13e70 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13e80 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
13e90 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
13ea0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
13eb0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
13ec0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
13ed0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13ee0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13ef0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
13f00 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
13f10 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
13f20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
13f30 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
13f40 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
13f50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13f60 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
13f70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13f80 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13f90 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
13fa0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
13fb0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
13fc0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
13fd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13fe0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
13ff0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14000 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14010 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
14020 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
14030 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
14040 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14050 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14060 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14070 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14080 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14090 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
140a0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
140b0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
140c0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
140d0 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
140e0 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
140f0 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
14100 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14110 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14120 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14130 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14140 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14150 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
14160 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
14170 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
14180 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
14190 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
141a0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
141b0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
141c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
141d0 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
141e0 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
141f0 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
14200 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
14210 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
14220 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
14230 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14240 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14250 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14260 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14270 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
14280 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
14290 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
142a0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
142b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
142c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
142d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
142e0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
142f0 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
14300 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
14310 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
14320 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14330 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
14340 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14350 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
14360 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
14370 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
14380 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
14390 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
143a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
143b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
143c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
143d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
143e0 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
143f0 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
14400 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
14410 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
14420 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
14430 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
14440 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
14450 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
14460 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
14470 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
14480 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
14490 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
144a0 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
144b0 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
144c0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
144d0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
144e0 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
144f0 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
14500 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
14510 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
14520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14530 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14540 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
14550 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
14560 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
14570 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14580 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14590 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
145a0 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
145b0 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
145c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
145d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
145e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
145f0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
14600 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
14610 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
14620 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
14630 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14640 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14650 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14660 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
14670 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
14680 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
14690 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
146a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
146b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
146c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
146d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
146e0 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
146f0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
14700 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14710 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14720 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14730 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14740 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14750 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
14760 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
14770 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
14780 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
14790 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
147a0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
147b0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
147c0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
147d0 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
147e0 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
147f0 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
14800 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14820 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14830 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14840 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14850 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
14860 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
14870 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14880 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14890 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
148a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
148b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
148c0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
148d0 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
148e0 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
148f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14900 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14910 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14920 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14930 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
14940 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  lob_close_intero
14950 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  p(IntPtr blob);.
14960 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14970 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14980 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14990 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
149a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
149b0 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
149c0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
149d0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
149e0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
149f0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
14a00 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
14a10 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
14a20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14a30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14a40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14a50 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14a60 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14a70 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
14a80 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
14a90 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
14aa0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
14ab0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
14ac0 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
14ad0 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
14ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14af0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14b00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14b10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14b20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14b30 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
14b40 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
14b50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14b60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14b70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14b80 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
14b90 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
14ba0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
14bb0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
14bc0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
14bd0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
14be0 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
14bf0 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
14c00 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
14c10 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
14c20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
14c30 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
14c40 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
14c50 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
14c60 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
14c70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14c80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14c90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14ca0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14cb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14cc0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14cd0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14ce0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14cf0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14d00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14d10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14d20 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14d30 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
14d40 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
14d50 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
14d60 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
14d70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14d80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14da0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14db0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14dc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14dd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14de0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14df0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14e00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14e10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14e20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14e30 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
14e40 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
14e50 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
14e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14f10 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14f20 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
14f30 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
14f40 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
14f50 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
14f60 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
14f70 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
14f80 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
14f90 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
14fa0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
14fb0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
14fc0 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
14fd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14fe0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14ff0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15000 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15010 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15020 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15030 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15050 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15060 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15070 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15080 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15090 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
150a0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
150b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
150c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
150d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
150e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
150f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15100 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15110 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15120 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15130 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15140 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15150 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15160 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15170 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
15180 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
15190 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
151a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
151b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
151c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
151d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
151e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
151f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15200 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15210 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15220 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15230 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15240 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
15250 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
15260 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
15270 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15280 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15290 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
152a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
152b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
152c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
152d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
152e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
152f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15300 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15310 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15320 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15330 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
15340 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
15350 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
15360 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15370 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15380 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15390 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
153a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
153b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
153c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
153d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
153e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
153f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15400 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15410 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15420 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
15430 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
15440 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
15450 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15460 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15470 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15490 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
154a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
154b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
154c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
154d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
154e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
154f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15500 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15510 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
15520 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
15530 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15540 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
15550 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15560 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15570 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15580 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15590 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
155a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
155b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
155c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
155d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
155e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
155f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15600 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
15610 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
15620 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
15630 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15640 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15650 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15660 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15670 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15680 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
156a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
156b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
156c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
156d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
156e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
156f0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
15700 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
15710 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15720 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15730 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15740 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15750 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15760 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15770 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15780 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15790 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
157a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
157b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
157c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
157d0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
157e0 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
157f0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
15800 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
15810 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15820 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15830 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15840 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15850 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15860 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15870 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15880 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15890 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
158a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
158b0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
158c0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
158d0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
158e0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
158f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15900 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15910 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15920 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15930 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15940 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15950 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15960 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15970 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15980 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15990 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
159a0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
159b0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
159c0 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
159d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
159e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
159f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15a00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15a20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15a30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15a40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15a50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15a60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15a70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15a80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15a90 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
15aa0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
15ab0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
15ac0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
15ad0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15ae0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15af0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15b00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15b20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15b30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15b40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15b50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15b60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15b70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15b80 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15b90 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
15ba0 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
15bb0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15bc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15bd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15be0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15bf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15c00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15c10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15c20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15c30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15c40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15c50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15c60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15c70 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
15c80 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
15c90 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
15ca0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15cb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15cc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15cd0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15ce0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15cf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15d00 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15d10 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15d20 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15d30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15d40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15d50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15d60 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
15d70 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
15d80 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
15d90 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
15da0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15db0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15dc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15dd0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15de0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15df0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15e00 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15e10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15e20 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15e30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15e40 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
15e50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
15e60 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
15e70 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
15e80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15e90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15ea0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15ec0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15ed0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15ee0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15ef0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15f00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15f10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15f20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15f30 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15f40 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
15f50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
15f60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15f70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15f80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15f90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15fa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15fb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15fc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15fd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15fe0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15ff0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16000 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16010 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
16020 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
16030 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
16040 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
16050 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
16060 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
16070 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
16080 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
16090 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
160a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
160b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
160c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
160d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
160e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
160f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16100 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16110 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16120 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16130 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16140 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16150 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
16160 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
16170 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
16180 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
16190 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
161a0 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
161b0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
161c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
161d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
161e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
161f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16200 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16210 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16220 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16230 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16240 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16250 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16260 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16270 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16280 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
16290 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
162a0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
162b0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
162c0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
162d0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
162e0 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
162f0 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
16300 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
16310 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
16320 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
16330 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
16340 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16350 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16360 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16370 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16380 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16390 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
163a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
163b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
163c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
163d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
163e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
163f0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
16400 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
16410 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16420 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16430 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16450 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16460 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16470 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16480 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16490 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
164a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
164b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
164c0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
164d0 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
164e0 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
164f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
16500 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
16510 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
16520 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
16530 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
16540 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
16550 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
16560 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
16570 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
16580 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
16590 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
165a0 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
165b0 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
165c0 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
165d0 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
165e0 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
165f0 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
16600 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
16610 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16620 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
16630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16640 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
16650 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
16660 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
16670 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
16680 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
16690 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
166a0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
166b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
166c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
166d0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
166e0 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
166f0 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
16700 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
16710 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
16720 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
16730 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
16740 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
16750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16760 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16770 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16780 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
16790 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
167a0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
167b0 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
167c0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
167d0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
167e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
167f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
16800 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16810 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16820 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
16830 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
16840 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
16850 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
16860 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
16870 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
16880 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
16890 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
168a0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
168b0 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
168c0 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
168d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
168e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
168f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16900 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
16910 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f  e3_table_cursor_
16920 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
16930 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74  tmt, int db, int
16940 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b   tableRootPage);
16950 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  ....#endif..// !
16960 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
16970 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
16980 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e  n....    // Stan
16990 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67  dard API calls g
169a0 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72  lobal across ver
169b0 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72  sions.  There ar
169c0 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65  e a few instance
169d0 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c  s of interop cal
169e0 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74  ls..    // scatt
169f0 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75  ered in here, bu
16a00 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20  t they are only 
16a10 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54  active when PLAT
16a20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16a30 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65  EWORK is declare
16a40 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  d...    #region 
16a50 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20  standard sqlite 
16a60 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  api calls....#if
16a70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16a80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16a90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16aa0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16ab0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16ac0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16ad0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16ae0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16af0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16b00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16b10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
16b20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62  tPtr sqlite3_lib
16b30 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69  version();....#i
16b40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16b50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16b60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16b70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16b80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16b90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16ba0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16bb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16bc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16bd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16be0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
16bf0 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  nt sqlite3_libve
16c00 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d  rsion_number();.
16c10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16c20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16c30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16c40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16c50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16c60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16c70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16c80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16c90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16ca0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16cb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16cc0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16cd0 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
16ce0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16cf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16d00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16d10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16d20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16d30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16d40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16d50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16d60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16d70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16d80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16d90 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
16da0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
16db0 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
16dc0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
16dd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16de0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16df0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16e00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16e10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16e20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16e30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
16e40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16e50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
16e60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16e70 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
16e80 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
16e90 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
16ea0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16eb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16ec0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16ee0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16ef0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16f00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16f10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16f20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16f30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16f40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16f50 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16f60 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
16f70 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
16f80 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65  (..        int e
16f90 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
16fa0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16fb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16fc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16fd0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16fe0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16ff0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17000 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17010 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17020 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17030 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17040 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17050 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17060 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
17070 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
17080 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
17090 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
170a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
170b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
170c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
170d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
170e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
170f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17100 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17110 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17120 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17130 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17140 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17150 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17160 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
17170 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
17180 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
17190 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
171a0 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
171b0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
171c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
171d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
171e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
171f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17200 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17210 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17220 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17230 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17240 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17250 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17260 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17270 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17280 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
17290 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
172a0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
172b0 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
172c0 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
172d0 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
172e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
172f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17300 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17310 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17320 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17330 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
17340 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
17350 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
17360 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17370 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
17380 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
17390 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
173a0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
173b0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
173c0 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
173d0 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
173e0 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
173f0 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
17400 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
17410 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
17420 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
17430 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17440 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17450 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
17460 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
17470 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
17480 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
17490 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
174a0 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
174b0 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
174c0 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
174d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
174e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
174f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17500 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17510 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17520 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17530 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17540 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17550 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17560 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
17570 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
17580 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
17590 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
175a0 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
175b0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
175c0 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
175d0 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
175e0 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
175f0 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
17600 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
17610 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
17620 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
17630 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
17640 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
17650 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
17660 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
17670 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
17680 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
17690 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
176a0 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
176b0 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
176c0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
176d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
176e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
176f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17700 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
17710 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
17720 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17730 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17740 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17750 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17760 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17770 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17780 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17790 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
177a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
177b0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
177c0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
177d0 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
177e0 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
177f0 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
17800 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
17810 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
17820 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
17830 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
17840 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
17850 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
17860 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
17870 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
17880 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
17890 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
178a0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
178b0 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
178c0 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
178d0 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
178e0 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
178f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
17900 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
17910 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
17920 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17930 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17940 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17950 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
17960 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
17970 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
17980 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#i
17990 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
179a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
179b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
179c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
179d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
179e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
179f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17a00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17a10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17a20 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17a30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17a40 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
17a50 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
17a60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17a70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17a80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17a90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17aa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17ab0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17ac0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17ad0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17ae0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17af0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17b00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17b10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17b20 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
17b30 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
17b40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17b50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17b60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17b70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17b80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17b90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17ba0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17bb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17bc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17bd0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17be0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
17bf0 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
17c00 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
17c10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17c20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17c30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17c40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17c50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17c60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17c70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17c80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17c90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17ca0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17cb0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17cc0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17cd0 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
17ce0 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
17cf0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
17d00 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
17d10 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79  gsEnum flags, by
17d20 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a  te[] vfsName);..
17d30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17d40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17d60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17d70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17d80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17d90 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
17da0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
17db0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
17dc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17dd0 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
17de0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
17df0 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
17e00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17e10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17e20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17e30 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66  _open16(string f
17e40 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ileName, ref Int
17e50 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
17e60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17e70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17e80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17e90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17ea0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17eb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17ec0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17ed0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17ee0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17ef0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17f00 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
17f10 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
17f20 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  upt(IntPtr db);.
17f30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17f40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17f60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17f70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17f80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17f90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
17fa0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17fb0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
17fc0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
17fd0 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62  _rowid(IntPtr db
17fe0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
17ff0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18000 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18020 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18030 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18040 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18050 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18070 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18080 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18090 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
180a0 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
180b0 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
180c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
180d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
180e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
180f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
18130 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18140 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
18150 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
18160 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
18170 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18180 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18190 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
181a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
181b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
181c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
181d0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
181e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
181f0 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
18200 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
18210 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
18220 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
18230 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18240 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18250 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18260 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18270 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18280 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18290 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
182a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
182b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
182c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
182d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
182e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
182f0 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b  ite3_shutdown();
18300 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18310 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18320 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18330 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18340 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18350 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18360 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18370 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18380 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18390 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
183a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
183b0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
183c0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73  Code sqlite3_bus
183d0 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
183e0 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
183f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18400 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18410 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18420 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18430 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18440 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18450 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18460 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18470 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18480 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18490 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
184a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
184b0 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  e sqlite3_clear_
184c0 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20  bindings(IntPtr 
184d0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
184e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
184f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18500 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18510 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18520 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18530 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18540 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18560 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18580 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18590 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
185a0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
185b0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
185c0 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
185d0 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
185e0 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
185f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18600 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18610 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18620 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18630 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18640 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18650 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
18660 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18670 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
18680 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
18690 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
186a0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
186b0 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
186c0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
186d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
186e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
186f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18700 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18710 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18720 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18730 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18740 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18750 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18760 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18770 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18780 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18790 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
187a0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
187b0 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
187c0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
187d0 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
187e0 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
187f0 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
18800 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
18810 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
18820 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
18830 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
18840 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
18850 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
18860 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
18870 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18880 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18890 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
188a0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
188b0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
188c0 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
188d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
188e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
188f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18900 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18910 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
18920 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
18930 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
18940 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18950 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18960 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18970 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
18980 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
18990 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
189a0 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
189b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
189c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
189d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
189e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
189f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18a00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18a10 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
18a20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18a30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18a40 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
18a50 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
18a60 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
18a70 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
18a80 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
18a90 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
18aa0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
18ab0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
18ac0 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
18ad0 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
18ae0 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
18af0 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
18b00 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
18b10 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
18b20 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
18b30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18b40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18b50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18b60 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
18b70 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
18b80 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
18b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18ba0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18bb0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
18bc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18bd0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18be0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
18bf0 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
18c00 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18c10 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
18c20 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
18c30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18c40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18c50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18c60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18c70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18c80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18c90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18ca0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18cb0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18cc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18cd0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18ce0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18cf0 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
18d00 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
18d10 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
18d20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18d30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18d40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18d50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18d60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18d70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18d80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18d90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18da0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18db0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18dc0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
18dd0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
18de0 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
18df0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18e00 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
18e10 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
18e20 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
18e30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18e40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18e50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18e60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18e70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18e80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18e90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18ea0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18eb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18ec0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18ed0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18ee0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
18ef0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
18f00 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
18f10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18f20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18f30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18f40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18f50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18f60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18f70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18f80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18f90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18fa0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18fb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18fc0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
18fd0 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
18fe0 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
18ff0 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
19000 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
19010 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19020 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19030 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19040 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19050 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19060 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19070 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19080 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19090 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
190a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
190b0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
190c0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
190d0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
190e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
190f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19100 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19130 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19140 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19150 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19160 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19170 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19180 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19190 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
191a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
191b0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
191c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
191d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
191e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
191f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19200 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19210 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19220 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19230 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19250 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19260 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19270 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
19280 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
19290 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
192a0 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#if 
192b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
192c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
192d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
192e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
192f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19300 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19310 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
19320 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19330 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
19340 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
19350 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
19360 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
19370 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19380 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19390 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
193a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
193b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
193c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
193d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
193e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
193f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19400 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19410 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19420 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
19430 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
19440 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
19450 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19460 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19470 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19490 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
194a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
194b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
194c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
194d0 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
194e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
194f0 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
19500 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
19510 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
19520 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19530 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19540 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19550 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19560 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19570 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19580 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19590 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
195a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
195b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
195c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
195d0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
195e0 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
195f0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
19600 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19610 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19630 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19640 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19660 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19670 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19680 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
19690 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
196a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
196b0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
196c0 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
196d0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
196e0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
196f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19700 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19710 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19720 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19730 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19740 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19750 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19760 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19770 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19780 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19790 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
197a0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
197b0 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
197c0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
197d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
197e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
197f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19800 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19810 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19820 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19830 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19840 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19850 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19860 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19870 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19880 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
19890 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
198a0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
198b0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
198c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
198d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
198e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
198f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19900 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19920 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19930 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19940 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19950 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19960 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19970 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19980 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
19990 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
199a0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
199b0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
199c0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
199d0 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
199e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
199f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19a00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19a10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19a20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19a30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19a40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19a50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19a60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19a70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19a80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19a90 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
19aa0 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
19ab0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
19ac0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
19ad0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19ae0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19af0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19b00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19b10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19b20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19b30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19b40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19b50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19b60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19b70 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
19b80 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
19b90 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
19ba0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19bb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19bc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19bd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19be0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19bf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19c00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
19c10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19c20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19c30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19c40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19c50 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
19c60 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
19c70 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
19c80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19c90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19ca0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19cb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19cc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19cd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19ce0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19cf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19d00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19d10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19d20 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
19d30 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
19d40 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
19d50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19d60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19d70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19d80 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19d90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19db0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
19dc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19dd0 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
19de0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
19df0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
19e00 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
19e10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19e20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19e30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19e40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19e50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19e60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19e70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19e80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19e90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19ea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19eb0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
19ec0 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
19ed0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
19ee0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19ef0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19f10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19f20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19f40 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
19f50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19f60 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
19f70 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
19f80 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
19f90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19fa0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19fb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19fc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19fd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19fe0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19ff0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1a000 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a010 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1a020 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1a030 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a040 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
1a050 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
1a060 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1a070 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a080 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a090 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a0a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a0b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a0c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a0d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a0e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a0f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a100 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a110 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a120 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1a130 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
1a140 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
1a150 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
1a160 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1a170 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1a180 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a190 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a1a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a1b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a1c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a1d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a1e0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1a1f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1a200 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1a210 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
1a220 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
1a230 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1a240 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a250 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a260 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a270 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a280 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a290 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a2a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a2b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a2c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a2d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a2e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a2f0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1a300 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
1a310 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
1a320 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
1a330 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
1a340 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a350 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a360 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a370 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a380 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a390 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a3a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a3b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a3c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a3d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a3e0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1a3f0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1a400 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
1a410 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
1a420 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
1a430 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a440 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a450 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a460 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a470 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a480 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a490 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a4a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a4b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a4c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a4d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a4e0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1a4f0 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1a500 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
1a510 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
1a520 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a530 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a550 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a560 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a580 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a590 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a5a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a5b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a5c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1a5d0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1a5e0 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
1a5f0 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
1a600 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a610 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a630 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a640 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a660 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a670 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a680 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a690 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a6a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a6b0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1a6c0 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
1a6d0 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
1a6e0 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
1a6f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a700 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a710 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a720 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a730 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a740 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a750 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a760 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a770 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a780 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a790 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1a7a0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1a7b0 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
1a7c0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
1a7d0 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1a7e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a7f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a800 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a810 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a820 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a830 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a840 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a850 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a860 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a870 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a880 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1a890 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
1a8a0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1a8b0 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
1a8c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a8d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a8e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a8f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a900 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a910 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a920 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1a930 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a940 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1a950 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
1a960 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1a970 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
1a980 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1a990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a9a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a9b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a9c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a9d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a9e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a9f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1aa00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1aa10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1aa20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1aa30 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1aa40 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
1aa50 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
1aa60 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1aa70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aa80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1aa90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1aaa0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aab0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1aac0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1aad0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1aae0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1aaf0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ab00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ab10 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1ab20 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
1ab30 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1ab40 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
1ab50 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
1ab60 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1ab70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ab80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ab90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1aba0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1abb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1abc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1abd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1abe0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1abf0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ac00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ac10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ac20 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1ac30 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
1ac40 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1ac50 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
1ac60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ac70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ac80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ac90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1aca0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1acb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1acc0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
1acd0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1ace0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
1acf0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ad00 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1ad10 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1ad20 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
1ad30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ad40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1ad50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1ad60 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
1ad70 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1ad80 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
1ad90 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
1ada0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
1adb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1adc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1add0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ade0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1adf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ae00 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ae10 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1ae20 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1ae30 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1ae40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ae50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1ae60 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1ae70 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1ae80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ae90 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1aea0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1aeb0 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
1aec0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1aed0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
1aee0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1aef0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1af00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1af10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1af20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1af30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1af40 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1af50 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1af60 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1af70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1af80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1af90 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1afa0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1afb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1afc0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1afd0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1afe0 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
1aff0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1b000 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
1b010 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
1b020 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
1b030 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
1b040 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
1b050 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b060 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b070 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b080 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b090 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b0a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b0b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b0c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b0d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b0e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b0f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b100 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1b110 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
1b120 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1b130 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
1b140 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b150 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b160 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b170 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b180 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b190 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b1a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b1b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b1c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b1d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b1e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b1f0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1b200 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
1b210 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
1b220 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
1b230 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
1b240 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
1b250 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
1b260 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b270 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b290 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b2a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b2b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b2c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b2d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b2e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b2f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b300 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b310 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
1b320 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
1b330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b360 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b370 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b380 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b390 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b3a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b3b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b3c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b3d0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1b3e0 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
1b3f0 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
1b400 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1b410 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b420 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b430 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b440 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b450 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b460 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b470 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b480 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b490 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b4a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b4b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1b4c0 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
1b4d0 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
1b4e0 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
1b4f0 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
1b500 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
1b510 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
1b520 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b530 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b550 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b560 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b570 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b580 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b5a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b5b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b5c0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1b5d0 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
1b5e0 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
1b5f0 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
1b600 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
1b610 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
1b620 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b630 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b640 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b650 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b660 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b670 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b680 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b690 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b6a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b6b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b6c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b6d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1b6e0 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
1b6f0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
1b700 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
1b710 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1b720 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1b730 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b740 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b750 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b760 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b770 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b780 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b790 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b7a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b7b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b7c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b7d0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b7e0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
1b7f0 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
1b800 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
1b810 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1b820 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1b830 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b840 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b850 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b860 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b870 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b880 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b890 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b8a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b8b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b8c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b8d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b8e0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1b8f0 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
1b900 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
1b910 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1b920 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
1b930 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
1b940 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
1b950 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
1b960 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
1b970 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
1b980 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
1b990 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
1b9a0 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
1b9b0 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
1b9c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b9d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b9e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b9f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1ba00 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1ba10 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
1ba20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ba30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ba40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ba50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ba60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1ba70 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1ba80 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
1ba90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1baa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bab0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bac0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1bad0 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
1bae0 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
1baf0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1bb00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1bb10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bb20 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1bb30 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1bb40 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1bb50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bb60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bb70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bb80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bb90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1bba0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1bbb0 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1bbc0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1bbd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bbe0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1bbf0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
1bc00 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
1bc10 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
1bc20 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
1bc30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bc40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bc50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bc60 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1bc70 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1bc80 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
1bc90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bca0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bcb0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bcc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bcd0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1bce0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1bcf0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1bd00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1bd10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1bd20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1bd30 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
1bd40 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1bd50 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
1bd60 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1bd70 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1bd80 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1bd90 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1bda0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bdb0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1bdc0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1bdd0 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
1bde0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1bdf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1be00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1be10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1be20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1be30 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1be40 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
1be50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1be60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1be70 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1be80 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
1be90 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74  onfig_int_refint
1bea0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
1beb0 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
1bec0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c  m op, int value,
1bed0 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29   ref int result)
1bee0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1bef0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1bf00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1bf10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1bf20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1bf30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1bf40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1bf50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1bf60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1bf70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1bf80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1bf90 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1bfa0 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f  ite3_rollback_ho
1bfb0 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
1bfc0 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c  LiteRollbackCall
1bfd0 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1bfe0 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1bff0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c000 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c020 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c030 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c040 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c050 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c070 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1c080 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c090 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c0a0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
1c0b0 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73  _handle(IntPtr s
1c0c0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1c0d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c0e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c0f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c100 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c110 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c120 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c130 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c140 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c150 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c160 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c170 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c180 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c190 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  3_db_release_mem
1c1a0 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ory(IntPtr db);.
1c1b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c1c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c1d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c1e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c1f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c200 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c210 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c220 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c230 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c240 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c250 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c260 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1c270 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49  e3_db_filename(I
1c280 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1c290 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
1c2a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c2b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c2c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c2d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c2e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c2f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c300 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c320 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c330 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c340 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1c350 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61  t sqlite3_db_rea
1c360 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c  donly(IntPtr db,
1c370 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
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 45  rt(SQLITE_DLL, E
1c3c0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1c3d0 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
1c3e0 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1c3f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c400 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c410 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c430 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1c440 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1c450 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66  ename")]..#endif
1c460 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c470 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1c480 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
1c490 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e  ilename_bytes(In
1c4a0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1c4b0 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
1c4c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c4d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c4e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c4f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c500 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c510 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c520 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c530 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c540 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1c550 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c560 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1c570 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
1c580 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
1c590 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
1c5a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c5b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c5c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c5d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c5e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c5f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c600 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c610 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c620 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c630 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c640 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c650 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c660 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
1c670 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1c680 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
1c690 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
1c6a0 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66  Ptr pvParam, ref
1c6b0 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
1c6c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c6d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c6e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c6f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c700 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c710 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c720 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c730 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c740 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c750 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1c760 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c770 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1c780 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
1c790 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
1c7a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c7b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c7c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c7d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c7e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c7f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c800 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c810 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c820 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c830 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c840 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c850 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74   int sqlite3_get
1c860 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50  _autocommit(IntP
1c870 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1c880 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c890 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c8a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c8b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c8c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c8d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c8e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c8f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c900 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c910 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c920 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c930 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c940 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
1c950 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72  ult_codes(IntPtr
1c960 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b   db, int onoff);
1c970 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c980 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c990 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c9a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c9b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c9c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c9d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c9e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c9f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ca00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ca10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ca20 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1ca30 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72  Code sqlite3_err
1ca40 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
1ca50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ca60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ca70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ca80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ca90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1caa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1cab0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1cac0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1cad0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cae0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1caf0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1cb00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1cb10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
1cb20 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e  ended_errcode(In
1cb30 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1cb40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1cb50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1cb60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cb70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1cb80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1cb90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1cba0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1cbb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cbc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1cbd0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1cbe0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1cbf0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
1cc00 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43  str(SQLiteErrorC
1cc10 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e  ode rc); /* 3.7.
1cc20 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  15+ */....    //
1cc30 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c   Since sqlite3_l
1cc40 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  og() takes a var
1cc50 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
1cc60 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
1cc70 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
1cc80 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
1cc90 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
1cca0 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  alls.  For now, 
1ccb0 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f  we are only expo
1ccc0 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74  sing a single st
1ccd0 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  ring, and..    /
1cce0 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  / depend on the 
1ccf0 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74  caller to format
1cd00 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69   the string...#i
1cd10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cd20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cd30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cd40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cd50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1cd60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1cd70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1cd80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cd90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1cda0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1cdb0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1cdc0 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  oid sqlite3_log(
1cdd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1cde0 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d  iErrCode, byte[]
1cdf0 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69   zFormat);....#i
1ce00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ce10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ce20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ce30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ce40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ce50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ce60 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ce70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ce80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ce90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1cea0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1ceb0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1cec0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
1ced0 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rol(IntPtr db, b
1cee0 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69  yte[] zDbName, i
1cef0 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41  nt op, IntPtr pA
1cf00 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  rg);....#if !PLA
1cf10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cf20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1cf30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cf40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1cf50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1cf60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1cf70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1cf80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cf90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1cfa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cfb0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1cfc0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69  sqlite3_backup_i
1cfd0 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44  nit(IntPtr destD
1cfe0 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e  b, byte[] zDestN
1cff0 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72  ame, IntPtr sour
1d000 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f  ceDb, byte[] zSo
1d010 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  urceName);....#i
1d020 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d030 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d040 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d050 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d060 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d080 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d090 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d0a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d0b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d0c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d0d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d0e0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74  qlite3_backup_st
1d0f0 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ep(IntPtr backup
1d100 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d  , int nPage);...
1d110 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d120 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d140 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d160 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d170 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d180 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d190 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d1a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d1b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d1c0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
1d1d0 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
1d1e0 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
1d1f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d200 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d210 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d220 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d240 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d250 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d260 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d270 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d280 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d290 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d2a0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
1d2b0 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
1d2c0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
1d2d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d2e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d2f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d300 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d320 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d330 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d340 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d360 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d370 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d380 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d390 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
1d3a0 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c  _close(IntPtr bl
1d3b0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
1d3c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d3d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d3e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d3f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d400 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d410 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d420 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d430 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d440 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d460 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1d470 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28  ite3_blob_bytes(
1d480 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
1d490 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d4a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d4b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d4c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d4d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d4e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d4f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d500 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d510 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d520 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d530 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d540 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1d550 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f  e sqlite3_blob_o
1d560 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  pen(IntPtr db, b
1d570 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
1d580 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
1d590 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f  te[] colName, lo
1d5a0 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c  ng rowId, int fl
1d5b0 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ags, ref IntPtr 
1d5c0 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  ptrBlob);....#if
1d5d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d5e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d5f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d600 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d610 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d620 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d630 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d650 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d660 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d670 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1d680 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1d690 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28  lite3_blob_read(
1d6a0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1d6b0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1d6c0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1d6d0 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1d6e0 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1d6f0 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1d700 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d710 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d720 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d730 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d740 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d750 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d760 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d770 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d780 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d790 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d7a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d7b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d7c0 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49  e3_blob_reopen(I
1d7d0 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67  ntPtr blob, long
1d7e0 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20   rowId);....#if 
1d7f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d800 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d820 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d830 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d850 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d860 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d870 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d890 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1d8a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1d8b0 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28  ite3_blob_write(
1d8c0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1d8d0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1d8e0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1d8f0 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1d900 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1d910 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1d920 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d930 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d940 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d950 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d960 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d970 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d980 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d990 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d9a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d9b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d9c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d9d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d9e0 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
1d9f0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1da00 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20  r zSQL);....#if 
1da10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1da20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1da30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1da40 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1da50 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1da60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1da70 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1da80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1da90 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1daa0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1dab0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1dac0 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  Ptr sqlite3_mpri
1dad0 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61  ntf(IntPtr forma
1dae0 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a  t, __arglist);..
1daf0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1db00 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20  ..    // SQLite 
1db10 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61  API calls that a
1db20 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22  re provided by "
1db30 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65  well-known" exte
1db40 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20  nsions that may 
1db50 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20  be statically.. 
1db60 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74     // linked wit
1db70 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1db80 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
1db90 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
1dba0 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  e...    #region 
1dbb0 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65  extension sqlite
1dbc0 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20   api calls..#if 
1dbd0 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
1dbe0 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54  TABLE..#if !PLAT
1dbf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dc00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1dc10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1dc20 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1dc30 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1dc40 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dc50 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1dc60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1dc70 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1dc80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1dc90 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1dca0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
1dcb0 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28  sposable_module(
1dcc0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1dcd0 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69  r name, ref sqli
1dce0 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c  te3_module modul
1dcf0 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  e, IntPtr pClien
1dd00 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d  tData, xDestroyM
1dd10 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b  odule xDestroy);
1dd20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dd30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dd40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dd50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dd60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dd70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dd80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dd90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dda0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ddb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ddc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ddd0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1dde0 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
1ddf0 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29  (IntPtr pModule)
1de00 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
1de10 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1de20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1de70 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69      #region sqli
1de80 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63  te interop api c
1de90 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61  alls (.NET Compa
1dea0 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c  ct Framework onl
1deb0 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  y)..#if PLATFORM
1dec0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ded0 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
1dee0 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49  NDARD..    [DllI
1def0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1df00 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1df10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1df20 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  oid sqlite3_last
1df30 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e  _insert_rowid_in
1df40 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
1df50 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29   ref long rowId)
1df60 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1df70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1df80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1df90 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1dfa0 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
1dfb0 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65  _used_interop(re
1dfc0 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
1dfd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1dfe0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1dff0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e000 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1e010 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
1e020 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28  ghwater_interop(
1e030 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72  int resetFlag, r
1e040 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
1e050 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1e060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e070 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e080 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e090 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e0a0 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69  e3_bind_double_i
1e0b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1e0c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1e0d0 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
1e0e0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1e0f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e100 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e110 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1e120 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1e130 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
1e140 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1e150 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1e160 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
1e170 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1e180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1e190 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1e1a0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
1e1b0 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20  interop")]..    
1e1c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e1d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1e1e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1e1f0 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72  ind_uint64_inter
1e200 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1e210 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75  int index, ref u
1e220 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
1e230 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e240 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1e250 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e260 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1e270 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
1e280 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
1e290 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e2a0 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
1e2b0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1e2c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e2d0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1e2e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e2f0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
1e300 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72  lumn_int64_inter
1e310 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1e320 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
1e330 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
1e340 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e350 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1e360 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e370 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1e380 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
1e390 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1e3a0 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  p, ref double va
1e3b0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1e3c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e3d0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1e3e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e3f0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
1e400 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
1e410 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
1e420 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
1e430 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e440 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1e450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e460 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1e470 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
1e480 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
1e490 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
1e4a0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
1e4b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e4c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1e4d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e4e0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1e4f0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
1e500 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
1e510 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
1e520 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
1e530 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e540 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1e550 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e560 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1e570 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
1e580 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
1e590 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20  _interop(..     
1e5a0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e     IntPtr db, In
1e5b0 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74  tPtr name, IntPt
1e5c0 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69  r pModule, int i
1e5d0 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65  Version, xCreate
1e5e0 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20   xCreate,..     
1e5f0 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e     xConnect xCon
1e600 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78  nect, xBestIndex
1e610 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69   xBestIndex, xDi
1e620 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
1e630 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  nect,..        x
1e640 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
1e650 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78  , xOpen xOpen, x
1e660 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46  Close xClose, xF
1e670 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a  ilter xFilter,..
1e680 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e          xNext xN
1e690 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20  ext, xEof xEof, 
1e6a0 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c  xColumn xColumn,
1e6b0 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20   xRowId xRowId, 
1e6c0 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c  xUpdate xUpdate,
1e6d0 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e  ..        xBegin
1e6e0 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78   xBegin, xSync x
1e6f0 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43  Sync, xCommit xC
1e700 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b  ommit, xRollback
1e710 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20   xRollback,..   
1e720 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
1e730 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
1e740 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  , xRename xRenam
1e750 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  e, xSavepoint xS
1e760 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20  avepoint,..     
1e770 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c     xRelease xRel
1e780 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54  ease, xRollbackT
1e790 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  o xRollbackTo, I
1e7a0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
1e7b0 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  a,..        xDes
1e7c0 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
1e7d0 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  royModule);..#en
1e7e0 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54  dif..    // PLAT
1e7f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e800 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
1e810 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23  _STANDARD..    #
1e820 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1e830 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e880 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
1e890 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69  ve Delegates..#i
1e8a0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
1e8b0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
1e8c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e8d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1e8e0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1e8f0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1e900 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e910 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1e920 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1e930 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
1e940 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
1e950 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
1e960 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
1e970 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1e980 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1e990 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1e9a0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1e9b0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
1e9c0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
1e9d0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea10 2f 2f 2f 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 0d 0a 0d 0a 23  ///////////....#
1ea30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ea40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ea50 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1ea60 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1ea70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ea80 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1ea90 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1eaa0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1eab0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
1eac0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
1ead0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
1eae0 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
1eaf0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
1eb00 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1eb10 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
1eb20 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
1eb30 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1eb40 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
1eb50 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eba0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1ebb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ebc0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1ebd0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1ebe0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1ebf0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ec00 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1ec10 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1ec20 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
1ec30 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
1ec40 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1ec50 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
1ec60 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
1ec70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ec80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ecc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ecd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ece0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1ecf0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1ed00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1ed10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1ed20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1ed30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1ed40 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
1ed50 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
1ed60 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1ed70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1edd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ede0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1edf0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1ee00 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1ee10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ee20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1ee30 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1ee40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
1ee50 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
1ee60 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
1ee70 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1ee80 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1eed0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1eee0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1eef0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1ef00 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1ef10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ef20 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1ef30 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1ef40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1ef50 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
1ef60 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1ef70 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
1ef80 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
1ef90 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1eff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1f010 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1f020 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1f030 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f040 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1f050 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1f060 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
1f070 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  lose(..        I
1f080 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
1f090 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1f0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1f0f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f100 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f110 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1f120 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1f130 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f140 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1f150 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1f160 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f170 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20   xFilter(..     
1f180 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
1f190 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
1f1a0 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
1f1b0 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
1f1c0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
1f1d0 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
1f1e0 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d  tr argv..    );.
1f1f0 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f240 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1f250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f260 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1f270 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1f280 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1f290 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f2a0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1f2b0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1f2c0 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
1f2d0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1f2e0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
1f2f0 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1f350 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f360 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1f370 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1f380 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1f390 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1f3a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1f3b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
1f3c0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
1f3d0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
1f3e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1f3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f400 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
1f440 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f450 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f460 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1f470 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1f480 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1f490 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1f4a0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1f4b0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1f4c0 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  e xColumn(..    
1f4d0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
1f4e0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  or,..        Int
1f4f0 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
1f500 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
1f510 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1f570 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f580 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f590 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1f5a0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1f5b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f5c0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1f5d0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1f5e0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1f5f0 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
1f600 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1f610 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  sor,..        re
1f620 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
1f630 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1f690 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f6a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f6b0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1f6c0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1f6d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f6e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f6f0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1f700 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f710 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
1f720 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1f730 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
1f740 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
1f750 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
1f760 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
1f770 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1f7d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f7e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f7f0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1f800 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1f810 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f820 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1f830 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1f840 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1f850 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
1f860 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1f870 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
1f880 20 2f 2f 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 0d 0a 0d 0a  ////////////....
1f8d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f8e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f8f0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1f900 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1f910 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f920 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1f930 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1f940 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1f950 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20  Code xSync(..   
1f960 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1f970 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
1f980 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9a0 2f 2f 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 0d 0a 0d 0a  ////////////....
1f9d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f9e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f9f0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1fa00 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1fa10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fa20 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1fa30 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1fa40 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1fa50 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
1fa60 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1fa70 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1fa80 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1fad0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1fae0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1faf0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1fb00 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1fb10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1fb20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1fb30 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1fb40 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1fb50 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
1fb60 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1fb70 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
1fb80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbd0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1fbe0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fbf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1fc00 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1fc10 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1fc20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1fc30 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1fc40 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
1fc50 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
1fc60 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1fc70 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1fc80 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
1fc90 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
1fca0 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
1fcb0 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
1fcc0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ack,..        re
1fcd0 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61  f IntPtr pUserDa
1fce0 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ta..    );....  
1fcf0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1fd40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1fd50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fd60 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1fd70 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1fd80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fd90 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1fda0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1fdb0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1fdc0 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
1fdd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1fde0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
1fdf0 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
1fe00 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1fe10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe50 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1fe60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fe70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1fe80 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1fe90 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1fea0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1feb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1fec0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1fed0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
1fee0 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
1fef0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1ff00 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
1ff10 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
1ff20 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff70 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1ff80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ff90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1ffa0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1ffb0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1ffc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ffd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1ffe0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1fff0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c  teErrorCode xRel
20000 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  ease(..        I
20010 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
20020 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
20030 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
20040 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20090 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
200a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
200b0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
200c0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
200d0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
200e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
200f0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
20100 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
20110 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
20120 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  kTo(..        In
20130 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
20140 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
20150 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
20160 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
201b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
201c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
201d0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
201e0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
201f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20200 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
20210 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
20220 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
20230 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
20240 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
20250 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
20260 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
202c0 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
202d0 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66   Structures..#if
202e0 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
202f0 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72  _TABLE..    [Str
20300 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
20310 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
20320 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
20330 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
20340 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
20350 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
20360 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20   iVersion;..    
20370 20 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61      public xCrea
20380 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20  te xCreate;..   
20390 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e       public xCon
203a0 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a  nect xConnect;..
203b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
203c0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
203d0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70  ndex;..        p
203e0 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63  ublic xDisconnec
203f0 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a  t xDisconnect;..
20400 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
20410 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
20420 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
20430 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a  c xOpen xOpen;..
20440 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
20450 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20  Close xClose;.. 
20460 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
20470 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a  ilter xFilter;..
20480 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
20490 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20  Next xNext;..   
204a0 20 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66       public xEof
204b0 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20   xEof;..        
204c0 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
204d0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
204e0 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78   public xRowId x
204f0 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20  RowId;..        
20500 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
20510 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
20520 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78   public xBegin x
20530 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20  Begin;..        
20540 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79  public xSync xSy
20550 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nc;..        pub
20560 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  lic xCommit xCom
20570 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  mit;..        pu
20580 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78  blic xRollback x
20590 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20  Rollback;..     
205a0 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46     public xFindF
205b0 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
205c0 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  ction;..        
205d0 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
205e0 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
205f0 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
20600 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
20610 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
20620 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
20630 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
20640 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
20650 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
20660 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
20670 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20680 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
20690 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  point;..        
206a0 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
206b0 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
206c0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
206d0 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
206e0 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  o;..    }....   
206f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20740 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
20750 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
20760 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
20770 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
20780 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20  qlite3_vtab..   
20790 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
207a0 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  ic IntPtr pModul
207b0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
207c0 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
207d0 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
207e0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
207f0 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
20800 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
20810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20860 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
20870 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
20880 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
20890 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
208a0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
208b0 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
208c0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
208d0 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  pVTab;..    }...
208e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
208f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20930 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
20940 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
20950 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
20960 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
20970 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
20980 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  _constraint..   
20990 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
209a0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
209b0 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  _constraint(..  
209c0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
209d0 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20  IndexConstraint 
209e0 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
209f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
20a00 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
20a10 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
20a20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
20a30 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  traint != null).
20a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
20a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a60 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72  iColumn = constr
20a70 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  aint.iColumn;.. 
20a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
20a90 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  p = constraint.o
20aa0 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
20ab0 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e      usable = con
20ac0 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d  straint.usable;.
20ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20ae0 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63   iTermOffset = c
20af0 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
20b00 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
20b10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
20b20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
20b80 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
20b90 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
20ba0 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
20bb0 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
20bc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
20bd0 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
20be0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
20bf0 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
20c00 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
20c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
20c60 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
20c70 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
20c80 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
20c90 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
20ca0 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a  _index_orderby..
20cb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
20cc0 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
20cd0 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20  dex_orderby(..  
20ce0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
20cf0 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64  IndexOrderBy ord
20d00 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
20d10 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
20d20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
20d30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20d40 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d    if (orderBy !=
20d50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
20d60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20d70 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
20d80 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e   orderBy.iColumn
20d90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20da0 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42     desc = orderB
20db0 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  y.desc;..       
20dc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20dd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20e30 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
20e40 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
20e50 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
20e60 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
20e70 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
20e80 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
20e90 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d  r ASC. */..    }
20ea0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
20eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ef0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
20f00 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
20f10 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
20f20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20f30 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
20f40 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
20f50 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sage..    {..   
20f60 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
20f70 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
20f80 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
20f90 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
20fa0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
20fb0 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
20fc0 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
20fd0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
20fe0 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
20ff0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21000 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
21010 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sage != null).. 
21020 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
21040 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72  gvIndex = constr
21050 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e  aintUsage.argvIn
21060 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
21070 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e        omit = con
21080 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
21090 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
210a0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
210b0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
210e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21100 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
21110 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
21120 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74   /* if >0, const
21130 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
21140 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
21150 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
21160 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20  lic byte omit;  
21170 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
21180 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
21190 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d  s constraint */.
211a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
211b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
21200 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
21210 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
21220 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
21230 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
21240 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
21250 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
21260 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
21270 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
21280 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20  nConstraint; /* 
21290 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
212a0 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  s in aConstraint
212b0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
212c0 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
212d0 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  traint;..       
212e0 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64   public int nOrd
212f0 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62  erBy;    /* Numb
21300 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
21310 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20   aOrderBy */..  
21320 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
21330 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
21340 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
21350 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
21360 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
21370 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
21380 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
21390 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
213a0 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
213b0 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
213c0 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
213d0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
213e0 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
213f0 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
21400 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
21410 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
21420 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
21430 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
21440 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
21450 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
21460 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
21470 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
21480 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
21490 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
214a0 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
214b0 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
214c0 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
214d0 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
214e0 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
214f0 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
21500 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
21510 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
21520 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
21530 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
21540 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
21550 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
21560 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
21570 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
21580 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b  xFlags idxFlags;
21590 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49   /* Mask of SQLI
215a0 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20  TE_INDEX_SCAN_* 
215b0 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20  flags */..      
215c0 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f    public long co
215d0 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f  lUsed;         /
215e0 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66  * Input: Mask of
215f0 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79   columns used by
21600 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20   statement */.. 
21610 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
21620 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
21630 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
21640 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
21650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21690 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
216a0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
216b0 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72  mework (only) Cr
216c0 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61  iticalHandle Cla
216d0 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ss..#if PLATFORM
216e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
216f0 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  K..  internal ab
21700 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69  stract class Cri
21710 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44  ticalHandle : ID
21720 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
21730 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
21740 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20   _isClosed;..   
21750 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74   protected IntPt
21760 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  r handle;....   
21770 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
21780 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
21790 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
217a0 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
217b0 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
217c0 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
217d0 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
217e0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
217f0 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
21800 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
21810 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
21820 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
21830 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
21840 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
21850 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
21860 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
21870 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
21880 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
21890 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
218a0 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
218b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
218c0 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
218d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
218e0 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
218f0 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
21900 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
21910 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
21920 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
21930 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
21940 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
21950 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
21960 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
21970 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
21980 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
21990 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
219a0 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
219b0 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
219c0 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
219d0 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
219e0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
219f0 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
21a00 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
21a10 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
21a20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
21a30 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
21a40 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
21a50 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
21a60 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
21a70 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
21a80 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
21a90 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
21aa0 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
21ab0 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
21ac0 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
21ad0 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
21ae0 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
21af0 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
21b00 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
21b10 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
21b20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
21b30 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
21b40 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
21b50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
21b60 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
21b70 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
21b80 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
21b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21be0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
21bf0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43  nnectionHandle C
21c00 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e  lass..    // Han
21c10 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67  dles the unmanag
21c20 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e  ed database poin
21c30 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65  ter, and provide
21c40 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a  s finalization..
21c50 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66      // support f
21c60 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65  or it...    inte
21c70 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
21c80 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
21c90 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  onHandle : Criti
21ca0 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
21cb0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
21cc0 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f  NDARD && !PLATFO
21cd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21ce0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
21cf0 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76  ernal delegate v
21d00 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
21d10 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  ionCallback(..  
21d20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
21d30 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
21d40 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29   hdl, IntPtr db)
21d50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
21d60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f  ernal static Clo
21d70 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
21d80 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63  back closeConnec
21d90 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
21da0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
21db0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d  loseConnection;.
21dc0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
21dd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
21de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
21e20 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
21e30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21e40 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
21e50 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
21e60 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
21e70 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
21e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ed0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
21ee0 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e  vate bool ownHan
21ef0 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dle;....        
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21f50 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
21f60 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
21f70 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
21f80 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
21f90 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d   db)..        {.
21fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
21fb0 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  (db != null)..  
21fc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
21fd0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
21fe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21ff0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
22000 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a   (db.syncRoot)..
22010 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22020 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
22040 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
22050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22060 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
22070 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22080 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
22090 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
220a0 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
220e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
22100 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e  ernal SQLiteConn
22110 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
22120 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e  Ptr db, bool own
22130 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
22140 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48       : this(ownH
22150 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
22160 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
22170 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
22190 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
221a0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
221b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
221c0 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61        this.ownHa
221d0 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65  ndle = ownHandle
221e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
221f0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
22200 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
22210 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
22220 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22270 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
22280 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
22290 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77  onHandle(bool ow
222a0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
222b0 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
222c0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
222d0 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
222e0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
222f0 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c      if (ownHandl
22300 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
22310 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
22320 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
22330 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
22340 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
22350 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
22360 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
22390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
223b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
223c0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
223d0 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
223e0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
223f0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
22400 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22410 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
22420 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
22430 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
22440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22450 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
22460 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
22470 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
22480 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
22490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
224a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
224b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
224c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
224d0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
224e0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
224f0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
22500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22510 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
22520 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
22530 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
22540 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
22550 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
22560 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
22570 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
22580 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
22590 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
225a0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
225b0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
225c0 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
225d0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
225e0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
225f0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
22600 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
22610 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
22620 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
22630 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
22640 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
22650 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
22660 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
22670 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
22680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22690 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
226a0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
226b0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
226c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
226d0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
226e0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
226f0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
22700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
22710 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
22720 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
22730 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
22740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22750 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
22760 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
22770 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22790 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
227a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
227b0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
227c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
227d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
227e0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
227f0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
22800 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
22810 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22830 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
22840 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
22850 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
22860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22870 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
22880 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
22890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
228b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
228c0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
228d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
228e0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
228f0 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
22900 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
22910 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
22920 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
22930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
22940 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
22950 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
22960 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
22970 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
22980 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
22990 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
229a0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
229b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
229c0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
229d0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
229e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
229f0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
22a00 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
22a10 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
22a20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
22a30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a50 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
22a60 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
22a70 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
22a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a90 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
22aa0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
22ab0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
22ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
22ad0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
22ae0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
22af0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
22b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
22b10 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
22b20 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
22b30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22b40 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
22b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22b60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22b70 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
22b80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22b90 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
22ba0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
22bb0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
22bc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22be0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
22bf0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
22c00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
22c30 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
22c40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
22c50 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
22c60 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
22c70 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
22c80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
22c90 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
22ca0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22cb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
22d10 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
22d20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
22d30 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
22d40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22d50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
22d60 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
22d70 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
22d80 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
22d90 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
22da0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
22db0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22e00 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
22e10 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20   OwnHandle..    
22e20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22e30 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
22e40 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
22e50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22e60 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
22e70 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
22e80 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
22e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
22ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22eb0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e        return own
22ec0 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
22ed0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
22ee0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22ef0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
22f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
22f50 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
22f60 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
22f70 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
22f80 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
22f90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
22fa0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
22fb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
22fd0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
22fe0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
22ff0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23000 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
23010 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
23020 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
23030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
23040 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
23050 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23060 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
230b0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
230c0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
230d0 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
230e0 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
230f0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
23100 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23110 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23120 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
23130 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
23140 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23150 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
23160 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
23170 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
23180 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
23190 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
231a0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
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 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23200 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
23210 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43  tatementHandle C
23220 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
23230 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
23240 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
23250 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
23260 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20  statements...   
23270 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
23280 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61   class SQLiteSta
23290 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43  tementHandle : C
232a0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
232b0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
232c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
232d0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
232e0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
232f0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
23300 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
23310 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
23320 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23360 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23370 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
23380 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
23390 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
233a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
233b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
233f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
23400 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
23410 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
23420 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
23430 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  dle stmt)..     
23440 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23450 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75    if (stmt != nu
23460 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
23470 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
23480 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23490 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
234a0 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79     lock (stmt.sy
234b0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
234c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
234d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
234e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
234f0 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  tmt.handle;..   
23500 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
23520 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23530 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
23540 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23550 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
235a0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
235b0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
235c0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
235d0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
235e0 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d  n, IntPtr stmt).
235f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
23600 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
23610 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
23620 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23630 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
23640 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
23650 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
23660 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23670 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
23680 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
23690 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
236a0 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  stmt);..        
236b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
236c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
236d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23710 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
23720 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61  rivate SQLiteSta
23730 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a  tementHandle()..
23740 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
23750 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
23760 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
23770 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
23780 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
23790 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
237a0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
237b0 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
237c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
237d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
237e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23820 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23830 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
23840 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
23850 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
23860 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23870 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
23880 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
23890 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
238a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
238b0 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
238c0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
238d0 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
238e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238f0 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
23900 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
23910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23920 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
23930 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
23940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23950 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
23960 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
23970 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
23980 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
23990 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
239a0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
239b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
239c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
239d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
239e0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
239f0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
23a00 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
23a10 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
23a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
23a30 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
23a40 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
23a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a60 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
23a70 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
23a80 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
23a90 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
23aa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
23ac0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
23ad0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23ae0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
23af0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
23b00 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
23b10 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
23b20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b40 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
23b50 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23b80 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
23b90 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
23ba0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
23bb0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
23bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bd0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
23be0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
23c20 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
23c40 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
23c50 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
23c60 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
23c70 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
23c80 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
23c90 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
23ca0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
23cb0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
23cc0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
23cd0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
23cf0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
23d00 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
23d10 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
23d20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
23d30 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
23d40 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
23d50 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
23d60 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
23d80 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
23d90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23da0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
23db0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
23dc0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
23dd0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
23de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23df0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
23e00 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
23e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
23e30 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
23e40 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
23e70 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
23e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
23ea0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
23eb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
23ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23ed0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
23ee0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
23ef0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
23f00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
23f10 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
23f20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23f30 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23f40 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
23f50 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
23f60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23f70 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
23f80 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
23f90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23fa0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
23fb0 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
23fc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23fd0 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
23fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
23ff0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
24000 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
24010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24060 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
24070 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
24080 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
24090 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
240a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
240b0 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
240c0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
240d0 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
240e0 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
240f0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
24100 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
24110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24150 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
24160 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
24170 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
24180 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24190 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
241a0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
241b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
241c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
241d0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
241e0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
241f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24200 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24210 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
24220 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
24230 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
24240 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24250 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24260 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
242c0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
242d0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
242e0 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
242f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
24300 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24310 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
24320 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
24330 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
24340 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
24360 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
24370 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
24380 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
24390 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
243a0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
243b0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24400 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
24410 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
24420 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
24430 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
24440 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
24450 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
24460 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
24470 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
24480 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
24490 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
244a0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
244b0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
244c0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
244d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
244e0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
244f0 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
24500 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
24510 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
24520 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
24530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24570 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
24580 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
24590 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
245a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24600 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
24610 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
24620 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
24630 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
24640 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
24650 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
24660 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
24670 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
24680 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
24690 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
246a0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
246b0 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
246c0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
246d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
246e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246f0 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
24700 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
24710 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
24720 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24730 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
24740 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
24750 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24760 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
247b0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
247c0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
247d0 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
247e0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
247f0 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
24800 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
24810 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
24820 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
24830 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24840 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
24850 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
24860 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
24870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24880 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
24890 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
248a0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
248b0 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
248c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
248d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24920 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
24930 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
24940 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
24950 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
24960 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
24970 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
24980 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
24990 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
249a0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
249b0 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
249c0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
249d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
249e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
249f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24a30 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
24a40 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
24a50 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
24a60 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
24a70 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
24a80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
24a90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24aa0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
24ac0 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
24ad0 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
24ae0 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
24af0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
24b00 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
24b10 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
24b20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
24b30 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
24b40 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
24b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
24b60 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
24b70 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61  Backup(cnn, loca
24b80 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
24b90 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
24ba0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
24bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24bc0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
24bd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24bf0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
24c00 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
24c10 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
24c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c30 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
24c40 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c60 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
24c70 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
24c80 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
24c90 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
24ca0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24cb0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
24cc0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
24cd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24ce0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
24cf0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
24d00 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
24d10 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
24d20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d40 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
24d50 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
24d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24d80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
24d90 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
24da0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
24db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24dc0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
24dd0 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
24de0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24df0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24e00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
24e10 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
24e20 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
24e30 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
24e40 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
24e50 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
24e60 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
24e70 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
24e80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24e90 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
24ea0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
24eb0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
24ec0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
24ed0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
24ee0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
24ef0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
24f00 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
24f10 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
24f20 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
24f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
24f40 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
24f50 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
24f60 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
24f70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
24f80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
24fb0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
24fc0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
24fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fe0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
24ff0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
25000 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
25010 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
25020 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
25030 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
25040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25050 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
25060 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
25070 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
25080 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
25090 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
250a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
250b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
250c0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
250d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
250e0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
250f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
25100 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
25110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
25130 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
25140 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
25150 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
25170 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
25180 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
25190 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
251a0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
251b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
251c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
251d0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
251e0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
251f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
25200 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25250 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
25260 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
25270 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
25280 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
25290 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
252a0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
252b0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
252c0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
252d0 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
252e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
252f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
25300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25340 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
25350 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
25360 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
25370 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25380 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
25390 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
253a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
253b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
253c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
253d0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
253e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25400 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
25410 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
25420 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
25430 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
25450 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
25460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
254b0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
254c0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
254d0 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
254e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
254f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
25510 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
25520 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
25530 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
25540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25550 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
25560 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
25570 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25580 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
25590 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
255a0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
255b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
25600 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  on SQLiteBlobHan
25610 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
25620 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
25630 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
25640 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
25650 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74  Lite blob object
25660 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
25670 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
25680 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a  LiteBlobHandle :
25690 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
256a0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
256b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
256c0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
256d0 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
256e0 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
256f0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
25700 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
25710 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25760 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
25770 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
25780 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
25790 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
257a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257b0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
257e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
257f0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
25800 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
25810 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
25820 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20   blob)..        
25830 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
25840 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29  f (blob != null)
25850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25860 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
25870 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25890 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52  lock (blob.syncR
258a0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
258b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
258c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
258d0 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62       return blob
258e0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
258f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25900 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25910 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
25920 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
25930 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25940 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25980 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
25990 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
259a0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53  LiteBlobHandle(S
259b0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
259c0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
259d0 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20  r blob)..       
259e0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
259f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
25a00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25a10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
25a20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
25a30 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
25a40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25a50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
25a60 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
25a80 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a  tHandle(blob);..
25a90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
25aa0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25ab0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25b00 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
25b10 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28  QLiteBlobHandle(
25b20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
25b30 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
25b40 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
25b50 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
25b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
25b70 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
25b80 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
25b90 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65  .blobCount);..#e
25ba0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
25bb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
25c10 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
25c20 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
25c30 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
25c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
25c50 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
25c60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25c70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c90 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
25ca0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
25cb0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cd0 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
25ce0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25d00 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
25d10 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
25d40 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f  loseBlob(cnn, lo
25d50 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
25d60 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
25d70 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
25d80 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
25d90 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
25da0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
25db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25dc0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
25dd0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
25de0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
25df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e00 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
25e10 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
25e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e30 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
25e40 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  Blob: {0}", loca
25e50 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
25e60 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
25e70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25e80 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
25e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ea0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25eb0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
25ec0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
25ed0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
25ee0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
25ef0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25f10 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
25f20 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
25f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
25f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25f50 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
25f60 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
25f70 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
25f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f90 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
25fa0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
25fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fc0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
25fd0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
25fe0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
25ff0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
26000 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
26010 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
26020 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
26030 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
26040 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
26050 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
26060 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
26070 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
26080 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
26090 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
260a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
260b0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
260c0 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
260d0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
260e0 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
260f0 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
26100 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
26110 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
26120 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
26130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26140 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
26150 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26160 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
26170 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
26180 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
26190 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
261a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261b0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
261c0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
261d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261e0 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62        "CloseBlob
261f0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
26200 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
26210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26220 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
26230 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
26240 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
26250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
26260 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
26270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26280 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
26290 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
262a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
262b0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
262c0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
262d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
262e0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
262f0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
26300 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
26310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
26320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26330 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
26340 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
26350 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26360 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
26370 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
26380 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
26390 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
263a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
263b0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
263c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
263d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
263e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26410 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
26420 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
26430 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
26440 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
26450 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
26460 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26470 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
26480 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
26490 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
264a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
264b0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
264c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26500 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26510 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
26520 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
26530 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
26540 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
26550 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
26560 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
26570 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26580 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
26590 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
265a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
265b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
265c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
265d0 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
265e0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
265f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26610 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
26620 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
26670 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
26680 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
26690 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
266a0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
266b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
266c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
266d0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
266e0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
266f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
26700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26710 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
26720 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
26730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
26740 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
26750 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
26760 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..