System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact bdcdefe6e430e73b60cf26536f4e859adec9ab67:


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 54 52 41  tion;....#if TRA
0180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 20 7c 7c 20  CE_DETECTION || 
0190: 54 52 41 43 45 5f 53 48 41 52 45 44 20 7c 7c 20  TRACE_SHARED || 
01a0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c 7c  TRACE_PRELOAD ||
01b0: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
01c0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69   using System.Di
01d0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e 64  agnostics;..#end
01e0: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
01f0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
0200: 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69  .Generic;..  usi
0210: 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20  ng System.IO;.. 
0220: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65   using System.Re
0230: 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  flection;....#if
0240: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0250: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0260: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0270: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02a0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02b0: 28 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34  (NET_40 || NET_4
02c0: 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
02d0: 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
02e0: 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
02f0: 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
0300: 37 29 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f  7) && !PLATFORM_
0310: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0320: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
0330: 2e 52 75 6e 74 69 6d 65 2e 56 65 72 73 69 6f 6e  .Runtime.Version
0340: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
0350: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54    using System.T
0360: 65 78 74 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ext;....#if !PLA
0370: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0380: 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55 4e 54 5f  MEWORK || COUNT_
0390: 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69 6e 67 20  HANDLE..  using 
03a0: 53 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e 67  System.Threading
03b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75  ;..#endif....  u
03c0: 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b  sing System.Xml;
03d0: 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 44 65  ....  #region De
03e0: 62 75 67 20 44 61 74 61 20 53 74 61 74 69 63 20  bug Data Static 
03f0: 43 6c 61 73 73 0d 0a 23 69 66 20 43 4f 55 4e 54  Class..#if COUNT
0400: 5f 48 41 4e 44 4c 45 20 7c 7c 20 44 45 42 55 47  _HANDLE || DEBUG
0410: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
0420: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  >..  /// This cl
0430: 61 73 73 20 65 6e 63 61 70 73 75 6c 61 74 65 73  ass encapsulates
0440: 20 73 6f 6d 65 20 74 72 61 63 6b 69 6e 67 20 64   some tracking d
0450: 61 74 61 20 74 68 61 74 20 69 73 20 75 73 65 64  ata that is used
0460: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a   for debugging..
0470: 20 20 2f 2f 2f 20 61 6e 64 20 74 65 73 74 69 6e    /// and testin
0480: 67 20 70 75 72 70 6f 73 65 73 2e 0d 0a 20 20 2f  g purposes...  /
0490: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
04a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
04b0: 20 63 6c 61 73 73 20 44 65 62 75 67 44 61 74 61   class DebugData
04c0: 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65  ..  {..      #re
04d0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
04e0: 61 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  a..#if DEBUG..  
04f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0500: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0510: 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74  s lock is used t
0520: 6f 20 70 72 6f 74 65 63 74 20 73 65 76 65 72 61  o protect severa
0530: 6c 20 73 74 61 74 69 63 20 66 69 65 6c 64 73 2e  l static fields.
0540: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0550: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0560: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0570: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
0580: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
0590: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
05a0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
05b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0600: 23 72 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c  #region Critical
0610: 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28   Handle Counts (
0620: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0630: 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  )..#if COUNT_HAN
0640: 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  DLE..      //.. 
0650: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
0660: 65 73 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65  ese counts repre
0670: 73 65 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e  sent the total n
0680: 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
0690: 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ding..      //  
06a0: 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73       (non-dispos
06b0: 65 64 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ed) CriticalHand
06c0: 6c 65 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63  le derived objec
06d0: 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  t instances..   
06e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61     //       crea
06f0: 74 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72  ted by this libr
0700: 61 72 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d  ary and are prim
0710: 61 72 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79  arily for use by
0720: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0730: 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2e   the test suite.
0740: 20 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61    These counts a
0750: 72 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62  re incremented b
0760: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  y the..      // 
0770: 20 20 20 20 20 20 61 73 73 6f 63 69 61 74 65 64        associated
0780: 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e   constructors an
0790: 64 20 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65  d are decremente
07a0: 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20  d upon the..    
07b0: 20 20 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65    //       succe
07c0: 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e  ssful completion
07d0: 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74   of the associat
07e0: 65 64 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ed ReleaseHandle
07f0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0800: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20   methods...     
0810: 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72   //..      inter
0820: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63  nal static int c
0830: 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d  onnectionCount;.
0840: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
0850: 73 74 61 74 69 63 20 69 6e 74 20 73 74 61 74 65  static int state
0860: 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  mentCount;..    
0870: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0880: 63 20 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e  c int backupCoun
0890: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
08a0: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 62 6c  al static int bl
08b0: 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69 66  obCount;..#endif
08c0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
08d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
08e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
0930: 72 65 67 69 6f 6e 20 53 65 74 74 69 6e 67 73 20  region Settings 
0940: 52 65 61 64 20 43 6f 75 6e 74 73 20 28 44 65 62  Read Counts (Deb
0950: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a  ug Build Only)..
0960: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
0970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0980: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64        /// This d
0990: 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73  ictionary stores
09a0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73   the read counts
09b0: 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65   for the runtime
09c0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a   configuration..
09d0: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e        /// settin
09e0: 67 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  gs.  This inform
09f0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65  ation is only re
0a00: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0a10: 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  iled in the..   
0a20: 20 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62     /// "Debug" b
0a30: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0a40: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0a50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0a60: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0a70: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0a80: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 52  g, int> settingR
0a90: 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 0d 0a 20 20  eadCounts;....  
0aa0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0af0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0b00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0b10: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
0b20: 73 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20  stores the read 
0b30: 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72  counts for the r
0b40: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
0b50: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
0b60: 73 65 74 74 69 6e 67 73 20 76 69 61 20 74 68 65  settings via the
0b70: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
0b80: 6f 6e 20 66 69 6c 65 2e 20 20 54 68 69 73 20 69  on file.  This i
0b90: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e  nformation is on
0ba0: 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65  ly..      /// re
0bb0: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0bc0: 69 6c 65 64 20 69 6e 20 74 68 65 20 22 44 65 62  iled in the "Deb
0bd0: 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ug" build config
0be0: 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  uration...      
0bf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0c00: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0c10: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
0c20: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74  string, int> set
0c30: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
0c40: 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ts;..#endif..   
0c50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0c60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0cc0: 6e 20 4f 74 68 65 72 20 43 6f 75 6e 74 73 20 28  n Other Counts (
0cd0: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0ce0: 29 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  )..#if DEBUG..  
0cf0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0d00: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0d10: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
0d20: 72 65 73 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75  res miscellaneou
0d30: 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20 66 6f  s counts used fo
0d40: 72 20 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 20  r debugging..   
0d50: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
0d60: 20 20 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69    This informati
0d70: 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72  on is only recor
0d80: 64 65 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65  ded when compile
0d90: 64 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d in the..      
0da0: 2f 2f 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c  /// "Debug" buil
0db0: 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  d configuration.
0dc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0de0: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
0df0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
0e00: 69 6e 74 3e 20 6f 74 68 65 72 43 6f 75 6e 74 73  int> otherCounts
0e10: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
0e20: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
0e30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0e40: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0ea0: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
0eb0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
0ec0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0ed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61  ..      /// Crea
0ee0: 74 65 73 20 64 69 63 74 69 6f 6e 61 72 69 65 73  tes dictionaries
0ef0: 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
0f00: 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66  he read counts f
0f10: 6f 72 20 65 61 63 68 20 6f 66 0d 0a 20 20 20 20  or each of..    
0f20: 20 20 2f 2f 2f 20 74 68 65 20 72 75 6e 74 69 6d    /// the runtim
0f30: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
0f40: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 65 73 65  settings.  These
0f50: 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73 65   numbers are use
0f60: 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  d for..      ///
0f70: 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74   debugging and t
0f80: 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20  esting purposes 
0f90: 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  only...      ///
0fa0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0fb0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
0fc0: 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65   void Initialize
0fd0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
0fe0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
0ff0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1000: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1010: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1020: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1030: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 64  TE: Create the d
1040: 69 63 74 69 6f 6e 61 72 69 65 73 20 6f 66 20 73  ictionaries of s
1050: 74 61 74 69 73 74 69 63 73 20 74 68 61 74 20 77  tatistics that w
1060: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
1070: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 74     //       cont
1080: 61 69 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  ain the number o
1090: 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74  f times each set
10a0: 74 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ting value..    
10b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10c0: 20 20 20 68 61 73 20 62 65 65 6e 20 72 65 61 64     has been read
10d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
10f0: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65     if (settingRe
1100: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
1110: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1120: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1130: 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63  Counts = new Dic
1140: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
1150: 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  int>();....     
1160: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1170: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1180: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11a0: 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f  ettingFileReadCo
11b0: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
11c0: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
11d0: 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  t>();....       
11e0: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
11f0: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
1200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1210: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 20 3d     otherCounts =
1220: 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
1230: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d  string, int>();.
1240: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
1250: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
1260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
12b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72 65  .      /// Incre
12d0: 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64 20 63  ments the read c
12e0: 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70 65  ount for the spe
12f0: 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63  cified runtime c
1300: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
1310: 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 2e      /// setting.
1320: 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20    These numbers 
1330: 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62  are used for deb
1340: 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69  ugging and testi
1350: 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20 20  ng purposes..   
1360: 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20 20     /// only...  
1370: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1380: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
1390: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
13a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13b0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
13c0: 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64 2e  ting being read.
13d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
13e0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
13f0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61  <param name="via
1400: 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  File">..      //
1410: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1420: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
1430: 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72 65 61  ing is being rea
1440: 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a  d from the XML..
1450: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
1460: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
1470: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1480: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
1490: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63 72  static void Incr
14a0: 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64  ementSettingRead
14b0: 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  Count(..        
14c0: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a    string name,..
14d0: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76            bool v
14e0: 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20  iaFile..        
14f0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
1500: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
1510: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
1520: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1530: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1540: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1550: 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74 61 74  OTE: Update stat
1560: 69 73 74 69 63 73 20 66 6f 72 20 74 68 69 73 20  istics for this 
1570: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d 0a  setting value...
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15a0: 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20  if (viaFile)..  
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65   if (settingFile
15e0: 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75  ReadCounts != nu
15f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1600: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20  int count;....  
1630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1640: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1650: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 54 72  ileReadCounts.Tr
1660: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1670: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
16a0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d  leReadCounts[nam
16b0: 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d  e] = count + 1;.
16c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16d0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
16e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16f0: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
1700: 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64  leReadCounts.Add
1710: 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20  (name, 1);..    
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1750: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1760: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1770: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1780: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21  tingReadCounts !
1790: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
17a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c0: 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a      int count;..
17d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17e0: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74          if (sett
17f0: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72  ingReadCounts.Tr
1800: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1810: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1830: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65         settingRe
1840: 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d  adCounts[name] =
1850: 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20   count + 1;..   
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1870: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1890: 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f     settingReadCo
18a0: 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31  unts.Add(name, 1
18b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
18c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
18f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
1900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1910: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
1950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1960: 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74  /// Increments t
1970: 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 75  he specified cou
1980: 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  nter...      ///
1990: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
19a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19b0: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
19c0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
19d0: 66 20 74 68 65 20 63 6f 75 6e 74 65 72 20 62 65  f the counter be
19e0: 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e  ing incremented.
19f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
1a00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ram>..      publ
1a10: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
1a20: 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
1a30: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  nt(..          s
1a40: 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
1a50: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1a70: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1a80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
1a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1aa0: 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 21 3d   (otherCounts !=
1ab0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ad0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
1ae0: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
1af0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
1b00: 74 68 65 72 43 6f 75 6e 74 73 2e 54 72 79 47 65  therCounts.TryGe
1b10: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74  tValue(name, out
1b20: 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20   count))..      
1b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b40: 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61 6d 65  otherCounts[name
1b50: 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a  ] = count + 1;..
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1b90: 68 65 72 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61  herCounts.Add(na
1ba0: 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20  me, 1);..       
1bb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1bc0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1bd0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
1be0: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23  ndregion..  }..#
1bf0: 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
1c00: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
1c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
1c60: 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ion Helper Metho
1c70: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ds Static Class.
1c80: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
1c90: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61  ..  /// This sta
1ca0: 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64  tic class provid
1cb0: 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20  es some methods 
1cc0: 74 68 61 74 20 61 72 65 20 73 68 61 72 65 64 20  that are shared 
1cd0: 62 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f  between the..  /
1ce0: 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  // native librar
1cf0: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64  y pre-loader and
1d00: 20 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d   other classes..
1d10: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
1d20: 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  >..  internal st
1d30: 61 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65  atic class Helpe
1d40: 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20  rMethods..  {.. 
1d50: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1d60: 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
1d70: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
1d80: 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c  nst string Displ
1d90: 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 20 3d 20 22  ayNullObject = "
1da0: 3c 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22 3b 0d 0a  <nullObject>";..
1db0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
1dc0: 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c  nst string Displ
1dd0: 61 79 45 6d 70 74 79 53 74 72 69 6e 67 20 3d 20  ayEmptyString = 
1de0: 22 3c 65 6d 70 74 79 53 74 72 69 6e 67 3e 22 3b  "<emptyString>";
1df0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1e00: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73  const string Dis
1e10: 70 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74  playStringFormat
1e20: 20 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b 0d 0a 0d   = "\"{0}\"";...
1e30: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
1e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e50: 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ....      privat
1e90: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44  e const string D
1ea0: 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 20  isplayNullArray 
1eb0: 3d 20 22 3c 6e 75 6c 6c 41 72 72 61 79 3e 22 3b  = "<nullArray>";
1ec0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1ed0: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73  const string Dis
1ee0: 70 6c 61 79 45 6d 70 74 79 41 72 72 61 79 20 3d  playEmptyArray =
1ef0: 20 22 3c 65 6d 70 74 79 41 72 72 61 79 3e 22 3b   "<emptyArray>";
1f00: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
1f60: 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
1f70: 41 72 72 61 79 4f 70 65 6e 20 3d 20 27 5b 27 3b  ArrayOpen = '[';
1f80: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1f90: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 6c 65  const string Ele
1fa0: 6d 65 6e 74 53 65 70 61 72 61 74 6f 72 20 3d 20  mentSeparator = 
1fb0: 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20 70 72 69  ", ";..      pri
1fc0: 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
1fd0: 41 72 72 61 79 43 6c 6f 73 65 20 3d 20 27 5d 27  ArrayClose = ']'
1fe0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
1ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72  ////....      pr
2040: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
2050: 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 70 61  donly char[] Spa
2060: 63 65 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20  ceChars = {..   
2070: 20 20 20 20 20 20 20 27 5c 74 27 2c 20 27 5c 6e         '\t', '\n
2080: 27 2c 20 27 5c 72 27 2c 20 27 5c 76 27 2c 20 27  ', '\r', '\v', '
2090: 5c 66 27 2c 20 27 20 27 0d 0a 20 20 20 20 20 20  \f', ' '..      
20a0: 7d 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  };..      #endre
20b0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
20c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2110: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2120: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f   Data..      ///
2130: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2140: 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20    /// This lock 
2150: 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65  is used to prote
2160: 63 74 20 74 68 65 20 73 74 61 74 69 63 20 3c 73  ct the static <s
2170: 65 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e 6f 22  ee cref="isMono"
2180: 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20 20 20   /> field...    
2190: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21a0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
21b0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
21c0: 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e  object staticSyn
21d0: 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
21e0: 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ct();....      /
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2240: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2250: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 74 79       /// This ty
2260: 70 65 20 69 73 20 6f 6e 6c 79 20 70 72 65 73 65  pe is only prese
2270: 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  nt when running 
2280: 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20  on Mono...      
2290: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
22b0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
22c0: 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d 65  ring MonoRuntime
22d0: 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75 6e  Type = "Mono.Run
22e0: 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  time";....      
22f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2340: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2350: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
2360: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
2370: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
2380: 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61  on Mono.  Initia
2390: 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d  lly null, it is.
23a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62  .      /// set b
23b0: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
23c0: 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68  "IsMono" /> meth
23d0: 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20  od on its first 
23e0: 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74  call.  Later, it
23f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72  ..      /// is r
2400: 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d  eturned verbatim
2410: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
2420: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
2430: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
2440: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2450: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2460: 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d  c bool? isMono =
2470: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
2480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
24d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
24e0: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
24f0: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
2500: 20 77 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79   we successfully
2510: 20 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a 20 20   invoked the..  
2520: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
2530: 66 3d 22 44 65 62 75 67 67 65 72 2e 42 72 65 61  f="Debugger.Brea
2540: 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 49  k" /> method.  I
2550: 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69  nitially null, i
2560: 74 20 69 73 20 73 65 74 20 62 79 0d 0a 20 20 20  t is set by..   
2570: 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20     /// the <see 
2580: 63 72 65 66 3d 22 4d 61 79 62 65 42 72 65 61 6b  cref="MaybeBreak
2590: 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20 2f 3e  IntoDebugger" />
25a0: 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66   method on its f
25b0: 69 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20 20 20  irst call...    
25c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
25d0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
25e0: 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64 65 62  static bool? deb
25f0: 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75 6c  uggerBreak = nul
2600: 6c 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  l;..      #endre
2610: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2670: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2680: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
2690: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
26a0: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
26b0: 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20 74 68  nes the ID of th
26c0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
26d0: 73 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66 6f  s.  Only used fo
26e0: 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20 20  r debugging...  
26f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2700: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
2710: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
2720: 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68 65  // The ID of the
2730: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
2740: 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74   -OR- zero if it
2750: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
2760: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
2770: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2780: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
2790: 69 63 20 69 6e 74 20 47 65 74 50 72 6f 63 65 73  ic int GetProces
27a0: 73 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  sId()..      {..
27b0: 20 20 20 20 20 20 20 20 20 20 50 72 6f 63 65 73            Proces
27c0: 73 20 70 72 6f 63 65 73 73 20 3d 20 50 72 6f 63  s process = Proc
27d0: 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74 50 72  ess.GetCurrentPr
27e0: 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20 20 20  ocess();....    
27f0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
2800: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2810: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2820: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
2830: 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 2e   return process.
2840: 49 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  Id;..      }....
2850: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
28b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
28c0: 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  Determines wheth
28d0: 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61  er or not this a
28e0: 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69  ssembly is runni
28f0: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ng on Mono...   
2900: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2910: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2920: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2930: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
2940: 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72  is assembly is r
2950: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
2960: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2970: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2980: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
2990: 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20   IsMono()..     
29a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
29b0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
29c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
29d0: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
29e0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
29f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a00: 20 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f          if (isMo
2a10: 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  no == null)..   
2a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a30: 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70     isMono = (Typ
2a40: 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75  e.GetType(MonoRu
2a50: 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75  ntimeType) != nu
2a60: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
2a70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2a80: 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a   (bool)isMono;..
2a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2aa0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
2ab0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2ac0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ad0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
2ae0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
2af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b00: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2b10: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
2b20: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2b30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 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 0d 0a  //////////////..
2b80: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2b90: 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73  Internal Methods
2ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2bb0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2bc0: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
2bd0: 53 51 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f  SQLite_BreakInto
2be0: 44 65 62 75 67 67 65 72 22 20 63 6f 6e 66 69 67  Debugger" config
2bf0: 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20  uration setting 
2c00: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  is..      /// pr
2c10: 65 73 65 6e 74 20 28 65 2e 67 2e 20 76 69 61 20  esent (e.g. via 
2c20: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 29  the environment)
2c30: 2c 20 67 69 76 65 20 74 68 65 20 69 6e 74 65 72  , give the inter
2c40: 61 63 74 69 76 65 20 75 73 65 72 20 61 6e 0d 0a  active user an..
2c50: 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74        /// opport
2c60: 75 6e 69 74 79 20 74 6f 20 61 74 74 61 63 68 20  unity to attach 
2c70: 61 20 64 65 62 75 67 67 65 72 20 74 6f 20 74 68  a debugger to th
2c80: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
2c90: 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  s; otherwise,.. 
2ca0: 20 20 20 20 20 2f 2f 2f 20 64 6f 20 6e 6f 74 68       /// do noth
2cb0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
2cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2cd0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2ce0: 20 76 6f 69 64 20 4d 61 79 62 65 42 72 65 61 6b   void MaybeBreak
2cf0: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a  IntoDebugger()..
2d00: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d10: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
2d20: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
2d30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d40: 20 20 20 20 20 69 66 20 28 64 65 62 75 67 67 65       if (debugge
2d50: 72 42 72 65 61 6b 20 21 3d 20 6e 75 6c 6c 29 0d  rBreak != null).
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d70: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20     return;..    
2d80: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d90: 20 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e       if (UnsafeN
2da0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74  ativeMethods.Get
2db0: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
2dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2dd0: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72  PreLoadSQLite_Br
2de0: 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22  eakIntoDebugger"
2df0: 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29  , null) != null)
2e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
2e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
2e30: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
2e40: 74 6f 20 75 73 65 20 74 68 65 20 43 6f 6e 73 6f  to use the Conso
2e50: 6c 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70  le in order to p
2e60: 72 6f 6d 70 74 20 74 68 65 0d 0a 20 20 20 20 20  rompt the..     
2e70: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2e80: 20 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73    interactive us
2e90: 65 72 20 28 69 66 20 61 6e 79 29 2e 20 20 54 68  er (if any).  Th
2ea0: 69 73 20 6d 61 79 20 66 61 69 6c 20 66 6f 72 20  is may fail for 
2eb0: 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  any..           
2ec0: 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62     //       numb
2ed0: 65 72 20 6f 66 20 72 65 61 73 6f 6e 73 2e 20 20  er of reasons.  
2ee0: 45 76 65 6e 20 69 6e 20 74 68 6f 73 65 20 63 61  Even in those ca
2ef0: 73 65 73 2c 20 77 65 20 73 74 69 6c 6c 0d 0a 20  ses, we still.. 
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2f10: 20 20 20 20 20 20 77 61 6e 74 20 74 6f 20 69 73        want to is
2f20: 73 75 65 20 74 68 65 20 61 63 74 75 61 6c 20 72  sue the actual r
2f30: 65 71 75 65 73 74 20 74 6f 20 62 72 65 61 6b 20  equest to break 
2f40: 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
2f50: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2f60: 20 64 65 62 75 67 67 65 72 2e 0d 0a 20 20 20 20   debugger...    
2f70: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
2fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fb0: 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74      Console.Writ
2fc0: 65 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d  eLine(StringForm
2fd0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2fe0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2ff0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
3000: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
3010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41                "A
3020: 74 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72  ttach a debugger
3030: 20 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20   to process {0} 
3040: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
3050: 20 20 20 20 20 20 20 20 20 20 20 22 61 6e 64 20             "and 
3060: 70 72 65 73 73 20 61 6e 79 20 6b 65 79 20 74 6f  press any key to
3070: 20 63 6f 6e 74 69 6e 75 65 2e 22 2c 0d 0a 20 20   continue.",..  
3080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3090: 20 20 20 20 47 65 74 50 72 6f 63 65 73 73 49 64      GetProcessId
30a0: 28 29 29 29 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41  ()));....#if PLA
30b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
30c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
30d0: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c            Consol
30e0: 65 2e 52 65 61 64 4c 69 6e 65 28 29 3b 0d 0a 23  e.ReadLine();..#
30f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
3100: 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e          Console.
3110: 52 65 61 64 4b 65 79 28 29 3b 0d 0a 23 65 6e 64  ReadKey();..#end
3120: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
3130: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
3140: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
3150: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
3160: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
3170: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
3180: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
3190: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
31a0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
31b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31c0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
31d0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
31e0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
31f0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
3200: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3220: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
3230: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
3240: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
3250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3260: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
3270: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
3280: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
3290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a0: 20 20 20 22 46 61 69 6c 65 64 20 74 6f 20 69 73     "Failed to is
32b0: 73 75 65 20 64 65 62 75 67 67 65 72 20 70 72 6f  sue debugger pro
32c0: 6d 70 74 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20  mpt, " +..      
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e0: 20 20 20 20 22 7b 30 7d 20 6d 61 79 20 62 65 20      "{0} may be 
32f0: 75 6e 75 73 61 62 6c 65 3a 20 7b 31 7d 22 2c 0d  unusable: {1}",.
3300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3310: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
3320: 66 28 43 6f 6e 73 6f 6c 65 29 2c 20 65 29 29 3b  f(Console), e));
3330: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3350: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3360: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
3370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
3380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3390: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
33a0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
33b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
33c0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
33d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33e0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
33f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3400: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62               Deb
3410: 75 67 67 65 72 2e 42 72 65 61 6b 28 29 3b 0d 0a  ugger.Break();..
3420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3430: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
3440: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
3450: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3470: 20 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72        debuggerBr
3480: 65 61 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  eak = true;..   
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
34a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34c0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
34d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34e0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
34f0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
3500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3510: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3520: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
3530: 75 67 67 65 72 42 72 65 61 6b 20 3d 20 66 61 6c  uggerBreak = fal
3540: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
3550: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
3560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3570: 72 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  row;..          
3580: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3590: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
35a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3600: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3610: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 70   Determines if p
3620: 72 65 70 61 72 69 6e 67 20 61 20 71 75 65 72 79  reparing a query
3630: 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
3640: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
3650: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3660: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3670: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
3680: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
3690: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
36a0: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
36b0: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
36c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
36e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
36f0: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
3700: 71 75 65 72 79 20 70 72 65 70 61 72 61 74 69 6f  query preparatio
3710: 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  n should be logg
3720: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
3730: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
3740: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3750: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3760: 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65 70 61 72  c bool LogPrepar
3770: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  e(..          SQ
3780: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3790: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
37a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
37b0: 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73  .          flags
37c0: 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   &= SQLiteConnec
37d0: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65  tionFlags.LogPre
37e0: 70 61 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  pare;..         
37f0: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
3800: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
3810: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65 70 61  onFlags.LogPrepa
3820: 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  re);..      }...
3830: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
3840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3880: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
38a0: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 70   Determines if p
38b0: 72 65 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e  re-parameter bin
38c0: 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c  ding should be l
38d0: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
38e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
38f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3900: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
3910: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
3920: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
3930: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
3940: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
3950: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
3960: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
3970: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3980: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
3990: 74 68 65 20 70 72 65 2d 70 61 72 61 6d 65 74 65  the pre-paramete
39a0: 72 20 62 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64  r binding should
39b0: 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65   be logged; othe
39c0: 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f  rwise,..      //
39d0: 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  / zero...      /
39e0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
39f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
3a00: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65  atic bool LogPre
3a10: 42 69 6e 64 28 0d 0a 20 20 20 20 20 20 20 20 20  Bind(..         
3a20: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3a30: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
3a40: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3a50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
3a60: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
3a70: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
3a80: 50 72 65 42 69 6e 64 3b 0d 0a 20 20 20 20 20 20  PreBind;..      
3a90: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
3aa0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
3ab0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72  ctionFlags.LogPr
3ac0: 65 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  eBind);..      }
3ad0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3b30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3b40: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
3b50: 66 20 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64  f parameter bind
3b60: 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ing should be lo
3b70: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
3b80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3b90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3ba0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
3bb0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
3bc0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3bd0: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
3be0: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
3bf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3c00: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
3c10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
3c20: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
3c30: 68 65 20 70 61 72 61 6d 65 74 65 72 20 62 69 6e  he parameter bin
3c40: 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c  ding should be l
3c50: 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65  ogged; otherwise
3c60: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
3c70: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
3c80: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
3c90: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 69 6e  atic bool LogBin
3ca0: 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  d(..          SQ
3cb0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3cc0: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
3cd0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
3ce0: 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73  .          flags
3cf0: 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   &= SQLiteConnec
3d00: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 69 6e  tionFlags.LogBin
3d10: 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  d;..          re
3d20: 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53  turn (flags == S
3d30: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
3d40: 6c 61 67 73 2e 4c 6f 67 42 69 6e 64 29 3b 0d 0a  lags.LogBind);..
3d50: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3d60: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
3db0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3dd0: 6d 69 6e 65 73 20 69 66 20 61 6e 20 65 78 63 65  mines if an exce
3de0: 70 74 69 6f 6e 20 69 6e 20 61 20 6e 61 74 69 76  ption in a nativ
3df0: 65 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c  e callback shoul
3e00: 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20  d be logged...  
3e10: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3e20: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
3e30: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
3e40: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
3e50: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
3e60: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
3e70: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
3e80: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
3e90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
3ea0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3eb0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
3ec0: 72 6f 20 69 66 20 74 68 65 20 65 78 63 65 70 74  ro if the except
3ed0: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ion should be lo
3ee0: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
3ef0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
3f00: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3f10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3f20: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 43 61 6c 6c  tic bool LogCall
3f30: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 73 28 0d  backExceptions(.
3f40: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
3f50: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
3f60: 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
3f70: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
3f80: 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d          flags &=
3f90: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3fa0: 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62 61  nFlags.LogCallba
3fb0: 63 6b 45 78 63 65 70 74 69 6f 6e 3b 0d 0a 20 20  ckException;..  
3fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
3fd0: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
3fe0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
3ff0: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
4000: 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ion);..      }..
4010: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4060: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
4070: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4080: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
4090: 62 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f 72  backup API error
40a0: 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
40b0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
40c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
40d0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
40e0: 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20  ="flags">..     
40f0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61   /// The flags a
4100: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
4110: 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  he parent connec
4120: 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20  tion object...  
4130: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4140: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
4150: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
4160: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
4170: 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f   backup API erro
4180: 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  r should be logg
4190: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
41a0: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
41b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
41c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
41d0: 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b 75 70  c bool LogBackup
41e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
41f0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
4200: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
4210: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
4220: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
4230: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
4240: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b  ionFlags.LogBack
4250: 75 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72  up;..          r
4260: 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20  eturn (flags == 
4270: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4280: 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b 75 70 29  Flags.LogBackup)
4290: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69  ;..      }....#i
42a0: 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
42b0: 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f  L_TABLE..      /
42c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4300: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
4310: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4320: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
4330: 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e 67 20 66  nes if logging f
4340: 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  or the <see cref
4350: 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
4360: 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a 20 20 20  /> class is..   
4370: 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c 65 64 2e     /// disabled.
4380: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4390: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
43a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
43b0: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  lags">..      //
43c0: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
43d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
43e0: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
43f0: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20  n object...     
4400: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
4410: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4420: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
4430: 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67 67 69 6e  n-zero if loggin
4440: 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  g for the <see c
4450: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
4460: 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a  e" /> class is..
4470: 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c        /// disabl
4480: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
4490: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
44a0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
44b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
44c0: 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d 6f 64 75  c bool NoLogModu
44d0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  le(..          S
44e0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
44f0: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
4500: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
4510: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
4520: 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s &= SQLiteConne
4530: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 67  ctionFlags.NoLog
4540: 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
4550: 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73     return (flags
4560: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
4570: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 67 4d  tionFlags.NoLogM
4580: 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20 20 7d  odule);..      }
4590: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
45f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4600: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
4610: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
4620: 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65 72  iteModule" /> er
4630: 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  rors should be l
4640: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
4650: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4660: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4670: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
4680: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
4690: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
46a0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
46b0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
46c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
46d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
46e0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
46f0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
4700: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4710: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
4720: 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20  error should be 
4730: 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20 20 2f  logged;..      /
4740: 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65  // otherwise, ze
4750: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
4760: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4770: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4780: 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45   bool LogModuleE
4790: 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
47a0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
47b0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
47c0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
47d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
47e0: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
47f0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
4800: 4d 6f 64 75 6c 65 45 72 72 6f 72 3b 0d 0a 20 20  ModuleError;..  
4810: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
4820: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
4830: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
4840: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 29 3b 0d  ogModuleError);.
4850: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
4860: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
48b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
48c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
48d0: 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65 20 63  rmines if <see c
48e0: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
48f0: 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 73  e" /> exceptions
4900: 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20   should be..    
4910: 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d 0a 20    /// logged... 
4920: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4930: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4940: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
4950: 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  s">..      /// T
4960: 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61  he flags associa
4970: 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72  ted with the par
4980: 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ent connection o
4990: 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  bject...      //
49a0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
49b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
49c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
49d0: 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20  ero if the <see 
49e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
49f0: 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e  le" /> exception
4a00: 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20   should be..    
4a10: 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20 6f 74    /// logged; ot
4a20: 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a  herwise, zero...
4a30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4a40: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
4a50: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
4a60: 20 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74   LogModuleExcept
4a70: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
4a80: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4a90: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
4aa0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4ab0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
4ac0: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
4ad0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d  ectionFlags.LogM
4ae0: 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 3b 0d  oduleException;.
4af0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
4b00: 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69  n (flags == SQLi
4b10: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
4b20: 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70  s.LogModuleExcep
4b30: 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  tion);..      }.
4b40: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
4b50: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
4ba0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4bb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
4bc0: 6d 69 6e 65 73 20 69 66 20 74 68 65 20 63 75 72  mines if the cur
4bd0: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 69 73 20  rent process is 
4be0: 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f 6e 65 20 6f  running on one o
4bf0: 66 20 74 68 65 20 57 69 6e 64 6f 77 73 0d 0a 20  f the Windows.. 
4c00: 20 20 20 20 20 2f 2f 2f 20 5b 73 75 62 2d 5d 70       /// [sub-]p
4c10: 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20 20 20 20 20  latforms...     
4c20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4c30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
4c40: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
4c50: 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65 6e 20 72 75  Non-zero when ru
4c60: 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73  nning on Windows
4c70: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
4c80: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
4c90: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4ca0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4cb0: 62 6f 6f 6c 20 49 73 57 69 6e 64 6f 77 73 28 29  bool IsWindows()
4cc0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
4cd0: 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20       PlatformID 
4ce0: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76  platformId = Env
4cf0: 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69  ironment.OSVersi
4d00: 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a  on.Platform;....
4d10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
4d20: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
4d30: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20  tformID.Win32S) 
4d40: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
4d50: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
4d60: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
4d70: 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20  2Windows) ||..  
4d80: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
4d90: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
4da0: 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c  ormID.Win32NT) |
4db0: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
4dc0: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
4dd0: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45  PlatformID.WinCE
4de0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
4df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
4e00: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
4e10: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
4e20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
4e30: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  se;..      }....
4e40: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4e90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
4ea0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4eb0: 54 68 69 73 20 69 73 20 61 20 77 72 61 70 70 65  This is a wrappe
4ec0: 72 20 61 72 6f 75 6e 64 20 74 68 65 0d 0a 20 20  r around the..  
4ed0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
4ee0: 66 3d 22 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  f="String.Format
4ef0: 28 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72  (IFormatProvider
4f00: 2c 53 74 72 69 6e 67 2c 4f 62 6a 65 63 74 5b 5d  ,String,Object[]
4f10: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  )" /> method... 
4f20: 20 20 20 20 20 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f       /// On Mono
4f30: 2c 20 69 74 20 68 61 73 20 74 6f 20 63 61 6c 6c  , it has to call
4f40: 20 74 68 65 20 6d 65 74 68 6f 64 20 6f 76 65 72   the method over
4f50: 6c 6f 61 64 20 77 69 74 68 6f 75 74 20 74 68 65  load without the
4f60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
4f70: 20 63 72 65 66 3d 22 49 46 6f 72 6d 61 74 50 72   cref="IFormatPr
4f80: 6f 76 69 64 65 72 22 20 2f 3e 20 70 61 72 61 6d  ovider" /> param
4f90: 65 74 65 72 2c 20 64 75 65 20 74 6f 20 61 20 62  eter, due to a b
4fa0: 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ug in Mono...   
4fb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4fc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4fd0: 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64  ram name="provid
4fe0: 65 72 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  er">..      /// 
4ff0: 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72  This is used for
5000: 20 63 75 6c 74 75 72 65 2d 73 70 65 63 69 66 69   culture-specifi
5010: 63 20 66 6f 72 6d 61 74 74 69 6e 67 2e 0d 0a 20  c formatting... 
5020: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
5030: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
5040: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
5050: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
5060: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e  e format string.
5070: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
5080: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5090: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
50a0: 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  s">..      /// A
50b0: 6e 20 61 72 72 61 79 20 74 68 65 20 6f 62 6a 65  n array the obje
50c0: 63 74 73 20 74 6f 20 66 6f 72 6d 61 74 2e 0d 0a  cts to format...
50d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
50e0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
50f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5100: 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67  // The resulting
5110: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
5120: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5130: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
5140: 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
5150: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
5160: 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f        IFormatPro
5170: 76 69 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d  vider provider,.
5180: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
5190: 67 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  g format,..     
51a0: 20 20 20 20 20 70 61 72 61 6d 73 20 6f 62 6a 65       params obje
51b0: 63 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20 20 20  ct[] args..     
51c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
51d0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 49  .          if (I
51e0: 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20 20 20 20 20  sMono())..      
51f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
5200: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 66 6f 72  tring.Format(for
5210: 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20  mat, args);..   
5220: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
5230: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5240: 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n String.Format(
5250: 70 72 6f 76 69 64 65 72 2c 20 66 6f 72 6d 61 74  provider, format
5260: 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20  , args);..      
5270: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
5280: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
52e0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
52f0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75  ethods..      pu
5300: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
5310: 6e 67 20 54 6f 44 69 73 70 6c 61 79 53 74 72 69  ng ToDisplayStri
5320: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 6f  ng(..          o
5330: 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20  bject value..   
5340: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
5350: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
5360: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
5370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
5380: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e 75 6c  eturn DisplayNul
5390: 6c 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20 20  lObject;....    
53a0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 74 72        string str
53b0: 69 6e 67 56 61 6c 75 65 20 3d 20 76 61 6c 75 65  ingValue = value
53c0: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a  .ToString();....
53d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
53e0: 72 69 6e 67 56 61 6c 75 65 2e 4c 65 6e 67 74 68  ringValue.Length
53f0: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
5400: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73        return Dis
5410: 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e 67 3b  playEmptyString;
5420: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
5430: 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e 49 6e   (stringValue.In
5440: 64 65 78 4f 66 41 6e 79 28 53 70 61 63 65 43 68  dexOfAny(SpaceCh
5450: 61 72 73 29 20 3c 20 30 29 0d 0a 20 20 20 20 20  ars) < 0)..     
5460: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5470: 73 74 72 69 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a  stringValue;....
5480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5490: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
54a0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
54b0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
54c0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
54d0: 74 43 75 6c 74 75 72 65 2c 20 44 69 73 70 6c 61  tCulture, Displa
54e0: 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 2c 0d 0a  yStringFormat,..
54f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
5500: 72 69 6e 67 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ringValue);..   
5510: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5560: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
5570: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
5580: 74 72 69 6e 67 20 54 6f 44 69 73 70 6c 61 79 53  tring ToDisplayS
5590: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
55a0: 20 20 41 72 72 61 79 20 61 72 72 61 79 0d 0a 20    Array array.. 
55b0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
55c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
55d0: 66 20 28 61 72 72 61 79 20 3d 3d 20 6e 75 6c 6c  f (array == null
55e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
55f0: 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e   return DisplayN
5600: 75 6c 6c 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20  ullArray;....   
5610: 20 20 20 20 20 20 20 69 66 20 28 61 72 72 61 79         if (array
5620: 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20  .Length == 0).. 
5630: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5640: 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70 74 79  urn DisplayEmpty
5650: 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  Array;....      
5660: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
5670: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
5680: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
5690: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
56a0: 65 61 63 68 20 28 6f 62 6a 65 63 74 20 76 61 6c  each (object val
56b0: 75 65 20 69 6e 20 61 72 72 61 79 29 0d 0a 20 20  ue in array)..  
56c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
56d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
56e0: 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
56f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5700: 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
5710: 28 45 6c 65 6d 65 6e 74 53 65 70 61 72 61 74 6f  (ElementSeparato
5720: 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
5730: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
5740: 6e 64 28 54 6f 44 69 73 70 6c 61 79 53 74 72 69  nd(ToDisplayStri
5750: 6e 67 28 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20  ng(value));..   
5760: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
5770: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
5780: 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  .Length > 0)..  
5790: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
57a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
57b0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
57c0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 49          result.I
57d0: 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79 4f 70  nsert(0, ArrayOp
57e0: 65 6e 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  en.ToString());.
57f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
5800: 20 20 20 20 20 20 72 65 73 75 6c 74 2e 49 6e 73        result.Ins
5810: 65 72 74 28 30 2c 20 41 72 72 61 79 4f 70 65 6e  ert(0, ArrayOpen
5820: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
5830: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
5840: 6c 74 2e 41 70 70 65 6e 64 28 41 72 72 61 79 43  lt.Append(ArrayC
5850: 6c 6f 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  lose);..        
5860: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
5870: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54   return result.T
5880: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
5890: 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
58a0: 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
58b0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5910: 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
5920: 4c 69 62 72 61 72 79 20 48 65 6c 70 65 72 20 43  Library Helper C
5930: 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  lass..  /// <sum
5940: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
5950: 73 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 70  s static class p
5960: 72 6f 76 69 64 65 73 20 61 20 74 68 69 6e 20 77  rovides a thin w
5970: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
5980: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
5990: 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69 6e 67 20  ..  /// loading 
59a0: 66 65 61 74 75 72 65 73 20 6f 66 20 74 68 65 20  features of the 
59b0: 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c 61 74 66  underlying platf
59c0: 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  orm...  /// </su
59d0: 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
59e0: 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
59f0: 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c  NativeLibraryHel
5a00: 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  per..  {..      
5a10: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
5a20: 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 20  Delegates..     
5a30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5a40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64        /// This d
5a50: 65 6c 65 67 61 74 65 20 69 73 20 75 73 65 64 20  elegate is used 
5a60: 74 6f 20 77 72 61 70 20 74 68 65 20 63 6f 6e 63  to wrap the conc
5a70: 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e 67 20 61  ept of loading a
5a80: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 2f   native..      /
5a90: 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62 61 73 65  // library, base
5aa0: 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e 61 6d 65  d on a file name
5ab0: 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20  , and returning 
5ac0: 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f 64 75 6c  the loaded modul
5ad0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 6e  e..      /// han
5ae0: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  dle...      /// 
5af0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5b00: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5b10: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
5b20: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
5b30: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
5b40: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
5b50: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
5b60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5b70: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5b80: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5b90: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
5ba0: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
5bb0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
5bc0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
5bd0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5be0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
5bf0: 65 20 64 65 6c 65 67 61 74 65 20 49 6e 74 50 74  e delegate IntPt
5c00: 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 43 61 6c  r LoadLibraryCal
5c10: 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
5c20: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
5c30: 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a 20 20 20  e..      );..   
5c40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
5c50: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ca0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
5cb0: 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64  n Private Method
5cc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
5cd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5ce0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f  / Attempts to lo
5cf0: 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ad the specified
5d00: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
5d10: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 57  file using the W
5d20: 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  in32..      /// 
5d30: 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  API...      /// 
5d40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5d50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5d60: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
5d70: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
5d80: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
5d90: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
5da0: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
5db0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5dc0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5dd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5de0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
5df0: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
5e00: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
5e10: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
5e20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5e30: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
5e40: 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
5e50: 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33 32  LoadLibraryWin32
5e60: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
5e70: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
5e80: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
5e90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65   {..          re
5ea0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
5eb0: 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 4c 6f  eMethodsWin32.Lo
5ec0: 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
5ed0: 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  me);..      }...
5ee0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
5ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f30: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
5f40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5f50: 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
5f60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5f70: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
5f80: 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65  oad the specifie
5f90: 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  d native library
5fa0: 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20   file using the 
5fb0: 50 4f 53 49 58 0d 0a 20 20 20 20 20 20 2f 2f 2f  POSIX..      ///
5fc0: 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   API...      ///
5fd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5fe0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5ff0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
6000: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
6010: 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  le name of the n
6020: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f  ative library to
6030: 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   load...      //
6040: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6050: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
6060: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
6070: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
6080: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
6090: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
60a0: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
60b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
60c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
60d0: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
60e0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69   LoadLibraryPosi
60f0: 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  x(..          st
6100: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
6110: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6120: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
6130: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
6140: 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 64  veMethodsPosix.d
6150: 6c 6f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  lopen(..        
6160: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
6170: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
6180: 6f 64 73 50 6f 73 69 78 2e 52 54 4c 44 5f 44 45  odsPosix.RTLD_DE
6190: 46 41 55 4c 54 29 3b 0d 0a 20 20 20 20 20 20 7d  FAULT);..      }
61a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
61b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
61c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6210: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
6220: 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  ublic Methods.. 
6230: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6240: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
6250: 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
6260: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
6270: 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ive library file
6280: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
62a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
62b0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
62c0: 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e    /// The file n
62d0: 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76  ame of the nativ
62e0: 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61  e library to loa
62f0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
6300: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6310: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6320: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
6330: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
6340: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
6350: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
6360: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
6370: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
6380: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
6390: 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64  atic IntPtr Load
63a0: 4c 69 62 72 61 72 79 28 0d 0a 20 20 20 20 20 20  Library(..      
63b0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
63c0: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ame..          )
63d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
63e0: 20 20 20 20 20 4c 6f 61 64 4c 69 62 72 61 72 79       LoadLibrary
63f0: 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63  Callback callbac
6400: 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 57  k = LoadLibraryW
6410: 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  in32;....#if !PL
6420: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6430: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
6440: 20 20 20 69 66 20 28 21 48 65 6c 70 65 72 4d 65     if (!HelperMe
6450: 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28  thods.IsWindows(
6460: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
6470: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61    callback = Loa
6480: 64 4c 69 62 72 61 72 79 50 6f 73 69 78 3b 0d 0a  dLibraryPosix;..
6490: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
64a0: 20 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 62      return callb
64b0: 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ack(fileName);..
64c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
64d0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
64e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
64f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6540: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
6550: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
6560: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
6570: 61 73 73 20 28 50 4f 53 49 58 29 0d 0a 23 69 66  ass (POSIX)..#if
6580: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6590: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 2f  CTFRAMEWORK..  /
65a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
65b0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64  /// This class d
65c0: 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65  eclares P/Invoke
65d0: 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c   methods to call
65e0: 20 6e 61 74 69 76 65 20 50 4f 53 49 58 20 41 50   native POSIX AP
65f0: 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  Is...  /// </sum
6600: 6d 61 72 79 3e 0d 0a 20 20 5b 53 75 70 70 72 65  mary>..  [Suppre
6610: 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53  ssUnmanagedCodeS
6620: 65 63 75 72 69 74 79 5d 0d 0a 20 20 69 6e 74 65  ecurity]..  inte
6630: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
6640: 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  s UnsafeNativeMe
6650: 74 68 6f 64 73 50 6f 73 69 78 0d 0a 20 20 7b 0d  thodsPosix..  {.
6660: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
66c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
66d0: 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49   This is the P/I
66e0: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61  nvoke method tha
66f0: 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69  t wraps the nati
6700: 76 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a  ve Unix dlopen..
6710: 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
6720: 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f 53  on.  See the POS
6730: 49 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  IX documentation
6740: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
6750: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
6760: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
6770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6780: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
67a0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
67b0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
67c0: 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62  e executable lib
67d0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
67e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
67f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6800: 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20  ="mode">..      
6810: 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74 20 62 65  /// This must be
6820: 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f   a combination o
6830: 66 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c  f the individual
6840: 20 62 69 74 20 66 6c 61 67 73 20 52 54 4c 44 5f   bit flags RTLD_
6850: 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  LAZY,..      ///
6860: 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f   RTLD_NOW, RTLD_
6870: 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52  GLOBAL, and/or R
6880: 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20  TLD_LOCAL...    
6890: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
68a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
68b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
68c0: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
68d0: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
68e0: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
68f0: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
6900: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
6910: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b  eturns>..      [
6920: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
6930: 65 72 6e 61 6c 22 2c 20 45 6e 74 72 79 50 6f 69  ernal", EntryPoi
6940: 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22 2c 0d 0a  nt = "dlopen",..
6950: 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e            Callin
6960: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6970: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6980: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
6990: 20 43 68 61 72 53 65 74 2e 41 6e 73 69 2c 0d 0a   CharSet.Ansi,..
69a0: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
69b0: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
69c0: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
69d0: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
69e0: 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61  .          SetLa
69f0: 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d  stError = true)]
6a00: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6a10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6a20: 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28 73 74 72  ntPtr dlopen(str
6a30: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 69 6e  ing fileName, in
6a40: 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20 20 20 20  t mode);....    
6a50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
6aa0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6ab0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
6ac0: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
6ad0: 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e  ), bind function
6ae0: 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79 2e 0d 0a   calls lazily...
6af0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6b00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
6b10: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
6b20: 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78 31 3b 0d  TLD_LAZY = 0x1;.
6b30: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b80: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
6b90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6ba0: 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20  // For use with 
6bb0: 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66  dlopen(), bind f
6bc0: 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 69 6d  unction calls im
6bd0: 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20 20 20 20  mediately...    
6be0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6bf0: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6c00: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
6c10: 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d 0a 20 20  NOW = 0x2;....  
6c20: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
6c70: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6c80: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
6c90: 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65  r use with dlope
6ca0: 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d 62 6f 6c  n(), make symbol
6cb0: 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76 61 69 6c  s globally avail
6cc0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
6cd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6ce0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
6cf0: 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c 4f 42 41  t int RTLD_GLOBA
6d00: 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d 0a 20 20  L = 0x100;....  
6d10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
6d60: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6d70: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
6d80: 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65  r use with dlope
6d90: 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65 20 6f 66  n(), opposite of
6da0: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e   RTLD_GLOBAL, an
6db0: 64 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a  d the default...
6dc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6dd0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
6de0: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
6df0: 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30 78 30 30  TLD_LOCAL = 0x00
6e00: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  0;....      ////
6e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6e60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6e70: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
6e80: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 74 68 65  th dlopen(), the
6e90: 20 64 65 66 61 75 6c 74 73 20 75 73 65 64 20 62   defaults used b
6ea0: 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  y this class... 
6eb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6ec0: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
6ed0: 6e 61 6c 20 20 63 6f 6e 73 74 20 69 6e 74 20 52  nal  const int R
6ee0: 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d 20 52 54  TLD_DEFAULT = RT
6ef0: 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44 5f 47 4c  LD_NOW | RTLD_GL
6f00: 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23 65 6e 64  OBAL;..  }..#end
6f10: 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e  if..  #endregion
6f20: 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
6f80: 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72   Unmanaged Inter
6f90: 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69  op Methods Stati
6fa0: 63 20 43 6c 61 73 73 20 28 57 69 6e 33 32 29 0d  c Class (Win32).
6fb0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
6fc0: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
6fd0: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
6fe0: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
6ff0: 63 61 6c 6c 20 6e 61 74 69 76 65 20 57 69 6e 33  call native Win3
7000: 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c  2 APIs...  /// <
7010: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21  /summary>..#if !
7020: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7030: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75  FRAMEWORK..  [Su
7040: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
7050: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65  odeSecurity]..#e
7060: 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ndif..  internal
7070: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
7080: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7090: 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a 20 20 20  sWin32..  {..   
70a0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
70f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7100: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
7110: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
7120: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
7130: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
7140: 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79  in32 LoadLibrary
7150: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
7160: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
7170: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
7180: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
7190: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
71a0: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
71b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
71c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
71d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
71e0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
71f0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
7200: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
7210: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
7220: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7230: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
7240: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7250: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
7260: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
7270: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
7280: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
7290: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
72a0: 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ns>..#if !PLATFO
72b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
72c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ORK..      [DllI
72d0: 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22  mport("kernel32"
72e0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
72f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
7300: 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  dll",..#endif.. 
7310: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7320: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7330: 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68  ntion.Winapi, Ch
7340: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
7350: 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54  Auto,..#if !PLAT
7360: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7370: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
7380: 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20   BestFitMapping 
7390: 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e  = false, ThrowOn
73a0: 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d  UnmappableChar =
73b0: 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a   true,..#endif..
73c0: 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73            SetLas
73d0: 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d  tError = true)].
73e0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
73f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
7400: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7410: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
7420: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
7480: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7490: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f  MEWORK..      //
74a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
74b0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
74c0: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
74d0: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
74e0: 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 47  e native Win32 G
74f0: 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a 20 20  etSystemInfo..  
7500: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
7510: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
7520: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
7530: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
7540: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
7550: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
7560: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7570: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7580: 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65 6d 49  am name="systemI
7590: 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  nfo">..      ///
75a0: 20 54 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   The system info
75b0: 72 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72  rmation structur
75c0: 65 20 74 6f 20 62 65 20 66 69 6c 6c 65 64 20 69  e to be filled i
75d0: 6e 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f  n by the functio
75e0: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
75f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 5b 44  param>..      [D
7600: 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c  llImport("coredl
7610: 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  l", CallingConve
7620: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7630: 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69  onvention.Winapi
7640: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
7650: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7660: 20 76 6f 69 64 20 47 65 74 53 79 73 74 65 6d 49   void GetSystemI
7670: 6e 66 6f 28 6f 75 74 20 53 59 53 54 45 4d 5f 49  nfo(out SYSTEM_I
7680: 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b  NFO systemInfo);
7690: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
76f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7700: 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 65 72 61  /// This enumera
7710: 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20 74 68  tion contains th
7720: 65 20 70 6f 73 73 69 62 6c 65 20 76 61 6c 75 65  e possible value
7730: 73 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  s for the proces
7740: 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  sor..      /// a
7750: 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c  rchitecture fiel
7760: 64 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20  d of the system 
7770: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75  information stru
7780: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
7790: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
77a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75      internal enu
77b0: 6d 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  m ProcessorArchi
77c0: 74 65 63 74 75 72 65 20 3a 20 75 73 68 6f 72 74  tecture : ushort
77d0: 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69 6e 33   /* COMPAT: Win3
77e0: 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b 0d 0a  2. */..      {..
77f0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 6c 20            Intel 
7800: 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0,..          
7810: 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20 20 20  MIPS = 1,..     
7820: 20 20 20 20 20 41 6c 70 68 61 20 3d 20 32 2c 0d       Alpha = 2,.
7830: 0a 20 20 20 20 20 20 20 20 20 20 50 6f 77 65 72  .          Power
7840: 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20 20 20  PC = 3,..       
7850: 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20 20 20     SHx = 4,..   
7860: 20 20 20 20 20 20 20 41 52 4d 20 3d 20 35 2c 0d         ARM = 5,.
7870: 0a 20 20 20 20 20 20 20 20 20 20 49 41 36 34 20  .          IA64 
7880: 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 6,..          
7890: 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a 20 20  Alpha64 = 7,..  
78a0: 20 20 20 20 20 20 20 20 4d 53 49 4c 20 3d 20 38          MSIL = 8
78b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 4d 44  ,..          AMD
78c0: 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20 20 20  64 = 9,..       
78d0: 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e 36 34     IA32_on_Win64
78e0: 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20 20 20   = 10,..        
78f0: 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78 46 46    Unknown = 0xFF
7900: 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  FF..      }.... 
7910: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7960: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7970: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
7980: 68 69 73 20 73 74 72 75 63 74 75 72 65 20 63 6f  his structure co
7990: 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69  ntains informati
79a0: 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63 75 72  on about the cur
79b0: 72 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e 20 54  rent computer. T
79c0: 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  his..      /// i
79d0: 6e 63 6c 75 64 65 73 20 74 68 65 20 70 72 6f 63  ncludes the proc
79e0: 65 73 73 6f 72 20 74 79 70 65 2c 20 70 61 67 65  essor type, page
79f0: 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20 61 64   size, memory ad
7a00: 64 72 65 73 73 65 73 2c 20 65 74 63 2e 0d 0a 20  dresses, etc... 
7a10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7a20: 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74 72 75  ry>..      [Stru
7a30: 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
7a40: 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
7a50: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
7a60: 20 73 74 72 75 63 74 20 53 59 53 54 45 4d 5f 49   struct SYSTEM_I
7a70: 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  NFO..      {..  
7a80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50          public P
7a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7aa0: 74 75 72 65 20 77 50 72 6f 63 65 73 73 6f 72 41  ture wProcessorA
7ab0: 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
7ac0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
7ad0: 73 68 6f 72 74 20 77 52 65 73 65 72 76 65 64 3b  short wReserved;
7ae0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7af0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
7b00: 63 20 75 69 6e 74 20 64 77 50 61 67 65 53 69 7a  c uint dwPageSiz
7b10: 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  e; /* NOT USED *
7b20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
7b30: 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 69 6e  lic IntPtr lpMin
7b40: 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41  imumApplicationA
7b50: 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55  ddress; /* NOT U
7b60: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
7b70: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
7b80: 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69 63 61  lpMaximumApplica
7b90: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
7ba0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7bb0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
7bc0: 6e 74 20 64 77 41 63 74 69 76 65 50 72 6f 63 65  nt dwActiveProce
7bd0: 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54  ssorMask; /* NOT
7be0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
7bf0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
7c00: 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65 73  dwNumberOfProces
7c10: 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sors; /* NOT USE
7c20: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
7c30: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 72  public uint dwPr
7c40: 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a 20  ocessorType; /* 
7c50: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7c60: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
7c70: 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e 47  nt dwAllocationG
7c80: 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20 4e  ranularity; /* N
7c90: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
7ca0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68        public ush
7cb0: 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 4c 65  ort wProcessorLe
7cc0: 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  vel; /* NOT USED
7cd0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
7ce0: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
7cf0: 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e 3b  ocessorRevision;
7d00: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7d10: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
7d20: 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
7d30: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
7d90: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
7da0: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
7db0: 61 74 69 63 20 43 6c 61 73 73 20 28 53 51 4c 69  atic Class (SQLi
7dc0: 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  te)..  /// <summ
7dd0: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
7de0: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
7df0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
7e00: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
7e10: 53 51 4c 69 74 65 20 41 50 49 73 2e 0d 0a 20 20  SQLite APIs...  
7e20: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7e40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7e50: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
7e60: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
7e70: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
7e80: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
7e90: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
7ea0: 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20  ethods..  {..   
7eb0: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
7ec0: 73 74 72 69 6e 67 20 45 78 63 65 70 74 69 6f 6e  string Exception
7ed0: 4d 65 73 73 61 67 65 46 6f 72 6d 61 74 20 3d 0d  MessageFormat =.
7ee0: 0a 20 20 20 20 20 20 20 20 20 20 22 43 61 75 67  .          "Caug
7ef0: 68 74 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20  ht exception in 
7f00: 5c 22 7b 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20  \"{0}\" method: 
7f10: 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  {1}";....      /
7f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f60: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7f70: 20 20 23 72 65 67 69 6f 6e 20 53 68 61 72 65 64    #region Shared
7f80: 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c   Native SQLite L
7f90: 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69  ibrary Pre-Loadi
7fa0: 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 23  ng Code..      #
7fb0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
7fc0: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
7fd0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7fe0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
7ff0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64  e extension used
8000: 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e   for dynamic lin
8010: 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d 0a 20 20  k libraries...  
8020: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8030: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
8040: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
8050: 79 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65  y string DllFile
8060: 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c  Extension = ".dl
8070: 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  l";....      ///
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80c0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
80d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
80e0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
80f0: 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66  extension used f
8100: 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  or the XML confi
8110: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
8120: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8130: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
8140: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
8150: 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f 6e 66 69  nly string Confi
8160: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  gFileExtension =
8170: 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20   ".config";.... 
8180: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
81d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
81e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
81f0: 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20  his is the name 
8200: 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  of the XML confi
8210: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 73 70  guration file sp
8220: 65 63 69 66 69 63 20 74 6f 20 74 68 65 0d 0a 20  ecific to the.. 
8230: 20 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e       /// System.
8240: 44 61 74 61 2e 53 51 4c 69 74 65 20 61 73 73 65  Data.SQLite asse
8250: 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mbly...      ///
8260: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8270: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
8280: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
8290: 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g XmlConfigFileN
82a0: 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
82b0: 20 74 79 70 65 6f 66 28 55 6e 73 61 66 65 4e 61   typeof(UnsafeNa
82c0: 74 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d  tiveMethods).Nam
82d0: 65 73 70 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65  espace + DllFile
82e0: 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20  Extension +..   
82f0: 20 20 20 20 20 20 20 43 6f 6e 66 69 67 46 69 6c         ConfigFil
8300: 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20  eExtension;.... 
8310: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8360: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8370: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
8380: 68 69 73 20 69 73 20 74 68 65 20 58 4d 4c 20 63  his is the XML c
8390: 6f 6e 66 69 67 75 72 61 74 72 69 6f 6e 20 66 69  onfiguratrion fi
83a0: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
83b0: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
83c0: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
83d0: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
83e0: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
83f0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
8400: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
8410: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ion..      /// f
8420: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
8430: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8440: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
8450: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
8460: 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74   XmlConfigDirect
8470: 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  oryToken =..    
8480: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
8490: 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66 69 67 44  QLite_XmlConfigD
84a0: 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 20 20 20  irectory%";..   
84b0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
84c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
84d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8510: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
8520: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
8530: 6e 74 73 20 28 44 65 73 6b 74 6f 70 20 46 72 61  nts (Desktop Fra
8540: 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69  mework Only)..#i
8550: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8560: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8570: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8580: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
8590: 73 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e  s is the environ
85a0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
85b0: 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ken that will be
85c0: 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a   replaced with..
85d0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75        /// the qu
85e0: 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f 20  alified path to 
85f0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
8600: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 61 73  ntaining this as
8610: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
8620: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8630: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
8640: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
8650: 69 6e 67 20 41 73 73 65 6d 62 6c 79 44 69 72 65  ing AssemblyDire
8660: 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20  ctoryToken =..  
8670: 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61          "%PreLoa
8680: 64 53 51 4c 69 74 65 5f 41 73 73 65 6d 62 6c 79  dSQLite_Assembly
8690: 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a  Directory%";....
86a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
86b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
86f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8700: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8710: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
8720: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
8730: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
8740: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
8750: 68 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h an..      /// 
8760: 61 62 62 72 65 76 69 61 74 69 6f 6e 20 6f 66 20  abbreviation of 
8770: 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65  the target frame
8780: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
8790: 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20  alue associated 
87a0: 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  with..      /// 
87b0: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  this assembly...
87c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
87d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
87e0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
87f0: 6e 6c 79 20 73 74 72 69 6e 67 20 54 61 72 67 65  nly string Targe
8800: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20  tFrameworkToken 
8810: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
8820: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 54 61 72  reLoadSQLite_Tar
8830: 67 65 74 46 72 61 6d 65 77 6f 72 6b 25 22 3b 0d  getFramework%";.
8840: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
8850: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8860: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
88b0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
88c0: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
88d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
88e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
88f0: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
8900: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
8910: 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ic _SQLiteNative
8920: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
8930: 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69  .      /// _SQLi
8940: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
8950: 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73  ndle, and proces
8960: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
8970: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e  latforms fields.
8980: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8990: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
89a0: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
89b0: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
89c0: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
89d0: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
89e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
89f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8a30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8a40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
8a50: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
8a60: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
8a70: 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65  gs between proce
8a80: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
8a90: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  e..      /// nam
8aa0: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20  es and platform 
8ab0: 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61  names.  These ma
8ac0: 70 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75  ppings are now u
8ad0: 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20  sed for two..   
8ae0: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
8af0: 20 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72    First, they ar
8b00: 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  e used to determ
8b10: 69 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d  ine if the assem
8b20: 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20  bly code..      
8b30: 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20  /// base should 
8b40: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20  be used instead 
8b50: 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c  of the location,
8b60: 20 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74   based upon whet
8b70: 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f  her one..      /
8b80: 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68  // or more of th
8b90: 65 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65  e named sub-dire
8ba0: 63 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69  ctories exist wi
8bb0: 74 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c  thin the assembl
8bc0: 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  y code..      //
8bd0: 2f 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c  / base.  Second,
8be0: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74   they are used t
8bf0: 6f 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64  o assist in load
8c00: 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69  ing the appropri
8c10: 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ate..      /// S
8c20: 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
8c30: 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20  sembly into the 
8c40: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
8c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
8c70: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
8c80: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
8c90: 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f  string> processo
8ca0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
8cb0: 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20  tforms;....     
8cc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
8d10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8d20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8d30: 69 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65  is the cached re
8d40: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
8d50: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
8d60: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
8d70: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
8d80: 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e  /> method -OR- n
8d90: 75 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68  ull if that meth
8da0: 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61  od..      /// ha
8db0: 73 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64  s never returned
8dc0: 20 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d   a valid value..
8dd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
8de0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
8df0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
8e00: 6e 67 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c  ng cachedAssembl
8e10: 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20  yDirectory;.... 
8e20: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8e70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8e80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
8e90: 68 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69  hen this field i
8ea0: 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69  s non-zero, it i
8eb0: 6e 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20  ndicates the..  
8ec0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
8ed0: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
8ee0: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
8ef0: 6f 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20  od was not able 
8f00: 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20  to locate a..   
8f10: 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
8f20: 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
8f30: 72 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20  ry.  The..      
8f40: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
8f50: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
8f60: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
8f70: 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20  thod will check 
8f80: 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  this..      /// 
8f90: 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20  field and skips 
8fa0: 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c  calls into the <
8fb0: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
8fc0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
8fd0: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  />..      /// me
8fe0: 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74  thod whenever it
8ff0: 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20   is non-zero... 
9000: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9010: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9020: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e  te static bool n
9030: 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
9040: 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry;....      ///
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9090: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
90a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
90b0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
90c0: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
90d0: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
90e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
90f0: 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66  cref="GetXmlConf
9100: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
9110: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
9120: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
9130: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
9140: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
9150: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
9160: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9170: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
9180: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
9190: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
91a0: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
91b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
91c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
9200: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9210: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
9220: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
9230: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
9240: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
9250: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
9260: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
9270: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ame" /> method w
9280: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
9290: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
92a0: 2f 2f 20 73 75 69 74 61 62 6c 65 20 58 4d 4c 20  // suitable XML 
92b0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
92c0: 6c 65 20 6e 61 6d 65 2e 20 20 54 68 65 0d 0a 20  le name.  The.. 
92d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
92e0: 65 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c  ef="GetCachedXml
92f0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
9300: 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63  /> method will c
9310: 68 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20  heck this..     
9320: 20 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73   /// field and s
9330: 6b 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20  kips calls into 
9340: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47  the <see cref="G
9350: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
9360: 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  ame" />..      /
9370: 2f 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76  // method whenev
9380: 65 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72  er it is non-zer
9390: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
93a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
93b0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
93c0: 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46  ool noXmlConfigF
93d0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
93e0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
93f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
9440: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9450: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
9460: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
9470: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
9480: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
9490: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
94a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
94b0: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
94c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
94d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
94e0: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
94f0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
9500: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9550: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9560: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
9570: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
9580: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
9590: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
95a0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
95b0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
95c0: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
95d0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
95e0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
95f0: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
9600: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9610: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
9620: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
9630: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
9640: 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
9650: 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
9660: 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
9670: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9680: 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52  RAMEWORK..#if PR
9690: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
96a0: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20  RARY..          
96b0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
96c0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e   NOTE: If the "N
96d0: 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22  o_PreLoadSQLite"
96e0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
96f0: 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
9700: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9710: 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20       anything), 
9720: 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70 65  skip all our spe
9730: 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69  cial code and si
9740: 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20  mply return...  
9750: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9760: 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
9770: 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72  tingValue("No_Pr
9780: 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75  eLoadSQLite", nu
9790: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
97b0: 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  rn;..#endif..#en
97c0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
97d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
97e0: 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 69 66  / NOTE: Check if
97f0: 20 61 20 64 65 62 75 67 67 65 72 20 6e 65 65 64   a debugger need
9800: 73 20 74 6f 20 62 65 20 61 74 74 61 63 68 65 64  s to be attached
9810: 20 62 65 66 6f 72 65 0d 0a 20 20 20 20 20 20 20   before..       
9820: 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 69 6e     //       doin
9830: 67 20 61 6e 79 20 72 65 61 6c 20 77 6f 72 6b 2e  g any real work.
9840: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9850: 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
9860: 4d 65 74 68 6f 64 73 2e 4d 61 79 62 65 42 72 65  Methods.MaybeBre
9870: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29  akIntoDebugger()
9880: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  ;....          #
9890: 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
98a0: 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
98b0: 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  UG..          //
98c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
98d0: 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20  OTE: Create the 
98e0: 6c 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74  lists of statist
98f0: 69 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f  ics that will co
9900: 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 20  ntain..         
9910: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 6f 75   //       variou
9920: 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20 69 6e  s counts used in
9930: 20 64 65 62 75 67 67 69 6e 67 2c 20 69 6e 63 6c   debugging, incl
9940: 75 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  uding the..     
9950: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75       //       nu
9960: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
9970: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
9980: 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d   has been read..
9990: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
99a0: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
99b0: 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b  ta.Initialize();
99c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
99d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
99e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
99f0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
9a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
9a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a30: 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75  // TODO: Make su
9a40: 72 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20  re this list is 
9a50: 75 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73  updated if the s
9a60: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20  upported..      
9a70: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9a80: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
9a90: 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e  tecture names an
9aa0: 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61  d/or platform na
9ab0: 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
9ac0: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e     //       chan
9ad0: 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ges...          
9ae0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9af0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
9b00: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
9b10: 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c  latforms == null
9b20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9b30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9b40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9b60: 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20  OTE: Create the 
9b70: 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72  map of processor
9b80: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
9b90: 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
9ba0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9bb0: 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  to platform name
9bc0: 73 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69  s using a case-i
9bd0: 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e  nsensitive strin
9be0: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
9bf0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
9c00: 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20  mparer...       
9c10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c30: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
9c40: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
9c50: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
9c60: 20 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63           new Dic
9c70: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
9c80: 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20  string>(..      
9c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ca0: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
9cb0: 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  er.OrdinalIgnore
9cc0: 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Case);....      
9cd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cf0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70    // NOTE: Setup
9d00: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61   the list of pla
9d10: 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f  tform names asso
9d20: 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
9d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9d40: 2f 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70  /       the supp
9d50: 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20  orted processor 
9d60: 61 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a  architectures...
9d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9d90: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
9da0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
9db0: 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22  tforms.Add("x86"
9dc0: 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20  , "Win32");..   
9dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
9de0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9df0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
9e00: 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22  d("AMD64", "x64"
9e10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9e20: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
9e30: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
9e40: 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c  orms.Add("IA64",
9e50: 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20   "Itanium");..  
9e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e70: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
9e80: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
9e90: 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43 45  dd("ARM", "WinCE
9ea0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
9eb0: 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c 49     }....#if SQLI
9ec0: 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55  TE_STANDARD || U
9ed0: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c  SE_INTEROP_DLL |
9ee0: 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  | PLATFORM_COMPA
9ef0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66  CTFRAMEWORK..#if
9f00: 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f   PRELOAD_NATIVE_
9f10: 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20  LIBRARY..       
9f20: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9f30: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42           // BUGB
9f40: 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74 20 6f  UG: What about o
9f50: 74 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f 6e  ther application
9f60: 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20 20   domains?..     
9f70: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9f80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
9f90: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
9fa0: 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50  leHandle == IntP
9fb0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
9fc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
9fe0: 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
9ff0: 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  y = null;..     
a000: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
a010: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
a020: 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75 6c 6c  hitecture = null
a030: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a040: 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45         /* IGNORE
a050: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
a060: 20 20 20 20 20 20 20 20 53 65 61 72 63 68 46 6f          SearchFo
a070: 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20  rDirectory(..   
a080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a090: 20 20 20 72 65 66 20 62 61 73 65 44 69 72 65 63     ref baseDirec
a0a0: 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65 73  tory, ref proces
a0b0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
a0c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a0d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a0f0: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
a100: 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20 53 51   pre-load the SQ
a110: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
a120: 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  y (or..         
a130: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a140: 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62    interop assemb
a150: 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20 62 6f  ly) and store bo
a160: 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  th the file name
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a180: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 64      //       and
a190: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
a1a0: 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65 72 20  andle for later 
a1b0: 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  usage...        
a1c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1e0: 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20  /* IGNORED */.. 
a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a200: 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c   PreLoadSQLiteDl
a210: 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l(..            
a220: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
a230: 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73  rectory, process
a240: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
a250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a260: 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69         ref _SQLi
a270: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  teNativeModuleFi
a280: 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a2a0: 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ef _SQLiteNative
a2b0: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a  ModuleHandle);..
a2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
a2d0: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
a2e0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
a2f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
a300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
a350: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a360: 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65       /// Combine
a370: 73 20 74 77 6f 20 70 61 74 68 20 73 74 72 69 6e  s two path strin
a380: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  gs...      /// <
a390: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a3a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a3b0: 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20 20 20  ="path1">..     
a3c0: 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74 20 70   /// The first p
a3d0: 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a  ath -OR- null...
a3e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
a3f0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
a400: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 32  aram name="path2
a410: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
a420: 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20 2d 4f  e second path -O
a430: 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  R- null...      
a440: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
a450: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
a460: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
a470: 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68 20 73   combined path s
a480: 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20  tring -OR- null 
a490: 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65 20 6f  if both of the o
a4a0: 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a 20 20  riginal path..  
a4b0: 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20      /// strings 
a4c0: 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  are null...     
a4d0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
a4e0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
a4f0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d 61 79  tatic string May
a500: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
a510: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a520: 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20 20 20   path1,..       
a530: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 32 0d     string path2.
a540: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
a550: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a560: 20 69 66 20 28 70 61 74 68 31 20 21 3d 20 6e 75   if (path1 != nu
a570: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
a580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a590: 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c  if (path2 != nul
a5a0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
a5b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74        return Pat
a5c0: 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68 31 2c  h.Combine(path1,
a5d0: 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20   path2);..      
a5e0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
a5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a600: 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d 0a 20  return path1;.. 
a610: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
a620: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
a630: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a640: 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32         if (path2
a650: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
a660: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a670: 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20 20 20  urn path2;..    
a680: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
a690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6a0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
a6b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a6c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a720: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a730: 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 74      /// Resets t
a740: 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f  he cached XML co
a750: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
a760: 20 6e 61 6d 65 20 76 61 6c 75 65 2c 20 74 68 75   name value, thu
a770: 73 20 66 6f 72 63 69 6e 67 20 74 68 65 0d 0a 20  s forcing the.. 
a780: 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20 63 61       /// next ca
a790: 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d  ll to <see cref=
a7a0: 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  "GetCachedXmlCon
a7b0: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
a7c0: 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a  method to rely..
a7d0: 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74        /// upon t
a7e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
a7f0: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
a800: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f  me" /> method to
a810: 20 66 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20   fetch the..    
a820: 20 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e 66 69 67    /// XML config
a830: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
a840: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
a850: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a860: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
a870: 6f 69 64 20 52 65 73 65 74 43 61 63 68 65 64 58  oid ResetCachedX
a880: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
a890: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
a8a0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
a8b0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
a8c0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
a8d0: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
a8e0: 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
a8f0: 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65 73 65  unt("Method_Rese
a900: 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  tCachedXmlConfig
a910: 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e  FileName");..#en
a920: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
a930: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a940: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
a950: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
a960: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a970: 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58           cachedX
a980: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
a990: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
a9a0: 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e          noXmlCon
a9b0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 61  figFileName = fa
a9c0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a9d0: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
a9e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
a9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
aa30: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
aa40: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
aa50: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
aa60: 73 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c  s the cached XML
aa70: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
aa80: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
aa90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65  ..      /// asse
aaa0: 6d 62 6c 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  mbly containing 
aab0: 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74  the managed Syst
aac0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63  em.Data.SQLite c
aad0: 6f 6d 70 6f 6e 65 6e 74 73 2c 20 69 66 0d 0a 20  omponents, if.. 
aae0: 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62       /// availab
aaf0: 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61 63 68  le.  If the cach
ab00: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
ab10: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76  tion file name v
ab20: 61 6c 75 65 20 69 73 20 6e 6f 74 0d 0a 20 20 20  alue is not..   
ab30: 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65     /// available
ab40: 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  , the <see cref=
ab50: 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  "GetXmlConfigFil
ab60: 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  eName" /> method
ab70: 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   will..      ///
ab80: 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61   be used to obta
ab90: 69 6e 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  in the XML confi
aba0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
abb0: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
abc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
abd0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
abe0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d        /// The XM
abf0: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
ac00: 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e  file name -OR- n
ac10: 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  ull if it cannot
ac20: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a   be determined..
ac30: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65        /// or doe
ac40: 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20  s not exist...  
ac50: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
ac60: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
ac70: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
ac80: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
ac90: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
aca0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
acb0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
acc0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
acd0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
ace0: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
acf0: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
ad00: 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 58  ethod_GetCachedX
ad10: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
ad20: 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
ad30: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
ad40: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  n....          l
ad50: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
ad60: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
ad70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ad80: 20 69 66 20 28 63 61 63 68 65 64 58 6d 6c 43 6f   if (cachedXmlCo
ad90: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20  nfigFileName != 
ada0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
adb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
adc0: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
add0: 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
ade0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
adf0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
ae00: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
ae10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
ae20: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  l;..          }.
ae30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
ae40: 75 72 6e 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67  urn GetXmlConfig
ae50: 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 20 20 20  FileName();..   
ae60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
aec0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
aed0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
aee0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
aef0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
af00: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  n file name for 
af10: 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20  the assembly..  
af20: 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69      /// containi
af30: 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53  ng the managed S
af40: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
af50: 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20  e components... 
af60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
af70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
af80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
af90: 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66  /// The XML conf
afa0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
afb0: 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ame -OR- null if
afc0: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
afd0: 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20  termined..      
afe0: 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20  /// or does not 
aff0: 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  exist...      //
b000: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b010: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b020: 69 63 20 73 74 72 69 6e 67 20 47 65 74 58 6d 6c  ic string GetXml
b030: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29  ConfigFileName()
b040: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
b050: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
b060: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
b070: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
b080: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
b090: 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
b0a0: 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 58 6d 6c  t("Method_GetXml
b0b0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29  ConfigFileName")
b0c0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
b0d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
b0e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ...          str
b0f0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  ing directory;..
b100: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
b110: 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69   fileName;....#i
b120: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b130: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b140: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
b150: 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  y = AppDomain.Cu
b160: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
b170: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
b180: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
b190: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
b1a0: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c  h(directory, Xml
b1b0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
b1c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
b1d0: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
b1e0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
b1f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b200: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
b210: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
b220: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
b240: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
b250: 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d  leName = fileNam
b260: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
b270: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
b280: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
b290: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
b2a0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
b2b0: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
b2c0: 79 20 3d 20 47 65 74 43 61 63 68 65 64 41 73 73  y = GetCachedAss
b2d0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
b2e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  ;..          fil
b2f0: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
b300: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
b310: 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ry, XmlConfigFil
b320: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
b330: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
b340: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
b350: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
b360: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
b370: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
b380: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b390: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b3a0: 20 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43        cachedXmlC
b3b0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
b3c0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
b3d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b3f0: 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  rn fileName;..  
b400: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b410: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
b420: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
b430: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b440: 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43 6f           noXmlCo
b450: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 74  nfigFileName = t
b460: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
b470: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
b480: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
b490: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b4f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b500: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63        /// If nec
b510: 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73  essary, replaces
b520: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
b530: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
b540: 20 66 69 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20   file tokens..  
b550: 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65      /// with the
b560: 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 76 61  ir associated va
b570: 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lues...      ///
b580: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b590: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b5a0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
b5b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
b5c0: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
b5d0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
b5e0: 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20   being read...  
b5f0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b600: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
b610: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
b620: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 65  ..      /// A se
b630: 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61 64  tting value read
b640: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f   from the XML co
b650: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
b660: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
b670: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
b680: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
b690: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
b6a0: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
b6b0: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
b6c0: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
b6d0: 74 65 64 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f  ted XML..      /
b6e0: 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  // configuration
b6f0: 20 66 69 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70   file tokens rep
b700: 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72  laced.  No retur
b710: 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73 65 72  n value is reser
b720: 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ved..      /// t
b730: 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72  o indicate an er
b740: 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f  ror.  This metho
b750: 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a  d cannot fail...
b760: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
b770: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
b780: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
b790: 67 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66  g ReplaceXmlConf
b7a0: 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20  igFileTokens(.. 
b7b0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b7c0: 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  fileName,..     
b7d0: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
b7e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
b7f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b800: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
b810: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
b820: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
b830: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b840: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
b850: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
b860: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
b870: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b880: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
b890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b8b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
b8c0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
b8d0: 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
b8e0: 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  me(fileName);...
b8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b900: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
b910: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
b920: 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b960: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
b970: 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20  eplace(..       
b980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b990: 20 20 20 20 20 20 20 58 6d 6c 43 6f 6e 66 69 67         XmlConfig
b9a0: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20  DirectoryToken, 
b9b0: 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20  directory);..   
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b9e0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
b9f0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
ba00: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba20: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
ba30: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
ba40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba50: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
ba60: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
ba70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ba80: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
ba90: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
baa0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
bab0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
bac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bad0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
baf0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
bb00: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
bb10: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
bb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
bb40: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
bb50: 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76  tCulture, "Nativ
bb60: 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20  e library " +.. 
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
bb90: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
bba0: 74 6f 20 72 65 70 6c 61 63 65 20 58 4d 4c 20 22  to replace XML "
bbb0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbd0: 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e    "configuration
bbe0: 20 66 69 6c 65 20 5c 22 7b 30 7d 5c 22 20 74 6f   file \"{0}\" to
bbf0: 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  kens: {1}",..   
bc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc10: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
bc20: 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  ame, e)); /* thr
bc30: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc60: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bca0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcc0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
bcd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bce0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
bcf0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
bd00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
bd10: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
bd20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
bd80: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bd90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
bda0: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
bdb0: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
bdc0: 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69   specified setti
bdd0: 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ng, using the.. 
bde0: 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
bdf0: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
be00: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
be10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
be20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
be30: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
be40: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
be50: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58  he name of the X
be60: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
be70: 20 66 69 6c 65 20 74 6f 20 72 65 61 64 2e 0d 0a   file to read...
be80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
be90: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
bea0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
beb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
bec0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
bed0: 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ting...      ///
bee0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
bef0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
bf00: 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20  ="default">..   
bf10: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
bf20: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
bf30: 69 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68  if the setting h
bf40: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
bf50: 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20  explicitly..    
bf60: 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20    /// or cannot 
bf70: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
bf80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
bf90: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
bfa0: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78 70 61 6e  aram name="expan
bfb0: 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  d">..      /// N
bfc0: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78 70 61 6e  on-zero to expan
bfd0: 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e 6d 65 6e  d any environmen
bfe0: 74 20 76 61 72 69 61 62 6c 65 20 72 65 66 65 72  t variable refer
bff0: 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e 65 64 20  ences contained 
c000: 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  in..      /// th
c010: 65 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  e setting value 
c020: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20  to be returned. 
c030: 20 54 68 69 73 20 68 61 73 20 6e 6f 20 65 66 66   This has no eff
c040: 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d  ect on the .NET.
c050: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61  .      /// Compa
c060: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
c070: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
c080: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
c090: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
c0a0: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
c0b0: 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20  he setting -OR- 
c0c0: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
c0d0: 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a  e specified by..
c0e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
c0f0: 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
c100: 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20  t" /> if it has 
c110: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
c120: 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20  licitly or..    
c130: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
c140: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
c150: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
c160: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
c170: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
c180: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69  etSettingValueVi
c190: 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d  aXmlConfigFile(.
c1a0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
c1b0: 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69  g fileName, /* i
c1c0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
c1d0: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20  string name,    
c1e0: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
c1f0: 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
c200: 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  ault, /* in */..
c210: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65            bool e
c220: 78 70 61 6e 64 20 20 20 20 20 20 2f 2a 20 69 6e  xpand      /* in
c230: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
c240: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
c250: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
c260: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c270: 20 20 20 20 20 69 66 20 28 28 66 69 6c 65 4e 61       if ((fileNa
c280: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  me == null) || (
c290: 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  name == null))..
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
c2c0: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
c2d0: 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20      XmlDocument 
c2e0: 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20 58  document = new X
c2f0: 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d  mlDocument();...
c300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
c310: 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69 6c  ocument.Load(fil
c320: 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
c330: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
c340: 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20       XmlElement 
c350: 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65  element = docume
c360: 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e  nt.SelectSingleN
c370: 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ode(..          
c380: 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
c390: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
c3a0: 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  at(CultureInfo.I
c3b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
c3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c3d0: 20 20 20 20 22 2f 63 6f 6e 66 69 67 75 72 61 74      "/configurat
c3e0: 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67 73 2f  ion/appSettings/
c3f0: 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22  add[@key='{0}']"
c400: 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20 20 20  , name)) as..   
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58                 X
c420: 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a 20 74 68  mlElement; /* th
c430: 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
c440: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
c450: 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent != null)..  
c460: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
c490: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
c4a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
c4b0: 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62  lement.HasAttrib
c4c0: 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20  ute("value")).. 
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4e0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65       value = ele
c4f0: 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74  ment.GetAttribut
c500: 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20  e("value");.... 
c510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c520: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
c530: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
c540: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
c550: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
c560: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c570: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c590: 66 20 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20  f (expand)..    
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5b0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
c5c0: 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
c5d0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
c5e0: 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
c5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c600: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65        value = Re
c610: 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74  placeEnvironment
c620: 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76  VariableTokens(v
c630: 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
c640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c650: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
c660: 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67  ReplaceXmlConfig
c670: 46 69 6c 65 54 6f 6b 65 6e 73 28 66 69 6c 65 4e  FileTokens(fileN
c680: 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
c690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c6b0: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
c6c0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
c6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6e0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c700: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
c710: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
c720: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
c730: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
c740: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
c750: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
c760: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
c770: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
c780: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
c790: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
c7a0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
c7c0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
c7d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c7e0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
c7f0: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
c800: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
c810: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c820: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
c830: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
c840: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
c850: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
c860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c870: 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
c880: 65 64 20 74 6f 20 67 65 74 20 73 65 74 74 69 6e  ed to get settin
c890: 67 20 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 20  g \"{0}\" value 
c8a0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
c8b0: 20 20 20 20 20 20 20 20 20 20 20 22 66 72 6f 6d             "from
c8c0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
c8d0: 6f 6e 20 66 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a  on file \"{1}\":
c8e0: 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20   {2}", name,..  
c8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c900: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29      fileName, e)
c910: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
c920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
c940: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
c950: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c960: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
c970: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
c980: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
c990: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
c9a0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
c9b0: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
c9c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca10: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
ca20: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ca30: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
ca40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ca50: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
ca60: 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ts to determine 
ca70: 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65  the target frame
ca80: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
ca90: 61 6c 75 65 20 74 68 61 74 20 69 73 0d 0a 20 20  alue that is..  
caa0: 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
cab0: 65 64 20 77 69 74 68 20 74 68 65 20 73 70 65 63  ed with the spec
cac0: 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20 61 73  ified managed as
cad0: 73 65 6d 62 6c 79 2c 20 69 66 20 61 70 70 6c 69  sembly, if appli
cae0: 63 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cable...      //
caf0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cb00: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cb10: 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 22 3e 0d  ame="assembly">.
cb20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d  .      /// The m
cb30: 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20  anaged assembly 
cb40: 74 6f 20 72 65 61 64 20 74 68 65 20 74 61 72 67  to read the targ
cb50: 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74  et framework att
cb60: 72 69 62 75 74 65 20 76 61 6c 75 65 0d 0a 20 20  ribute value..  
cb70: 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20      /// from... 
cb80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
cb90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
cba0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
cbb0: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
cbc0: 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  he target framew
cbd0: 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
cbe0: 6c 75 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  lue for the spec
cbf0: 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
cc00: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
cc10: 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  y -OR- null if i
cc20: 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
cc30: 72 6d 69 6e 65 64 2e 20 20 49 66 20 74 68 69 73  rmined.  If this
cc40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65  ..      /// asse
cc50: 6d 62 6c 79 20 77 61 73 20 63 6f 6d 70 69 6c 65  mbly was compile
cc60: 64 20 77 69 74 68 20 61 20 76 65 72 73 69 6f 6e  d with a version
cc70: 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72 61   of the .NET Fra
cc80: 6d 65 77 6f 72 6b 20 70 72 69 6f 72 20 74 6f 0d  mework prior to.
cc90: 0a 20 20 20 20 20 20 2f 2f 2f 20 76 65 72 73 69  .      /// versi
cca0: 6f 6e 20 34 2e 30 2c 20 74 68 65 20 76 61 6c 75  on 4.0, the valu
ccb0: 65 20 72 65 74 75 72 6e 65 64 20 4d 41 59 20 72  e returned MAY r
ccc0: 65 66 6c 65 63 74 20 74 68 61 74 20 76 65 72 73  eflect that vers
ccd0: 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54 0d  ion of the .NET.
cce0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 72 61 6d 65  .      /// Frame
ccf0: 77 6f 72 6b 20 69 6e 73 74 65 61 64 20 6f 66 20  work instead of 
cd00: 74 68 65 20 6f 6e 65 20 61 73 73 6f 63 69 61 74  the one associat
cd10: 65 64 20 77 69 74 68 20 74 68 65 20 73 70 65 63  ed with the spec
cd20: 69 66 69 65 64 20 6d 61 6e 61 67 65 64 0d 0a 20  ified managed.. 
cd30: 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c       /// assembl
cd40: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
cd50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
cd60: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
cd70: 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c  tring GetAssembl
cd80: 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  yTargetFramework
cd90: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  (..          Ass
cda0: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 0d 0a  embly assembly..
cdb0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
cdc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cdd0: 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
cde0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
cdf0: 20 7b 0d 0a 23 69 66 20 4e 45 54 5f 34 30 20 7c   {..#if NET_40 |
ce00: 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f  | NET_45 || NET_
ce10: 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c  451 || NET_452 |
ce20: 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f  | NET_46 || NET_
ce30: 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c  461 || NET_462 |
ce40: 7c 20 4e 45 54 5f 34 37 0d 0a 20 20 20 20 20 20  | NET_47..      
ce50: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
ce60: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73 44  if (assembly.IsD
ce90: 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20 20  efined(..       
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ceb0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
cec0: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
ced0: 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20  te), false))..  
cee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cef0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cf00: 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46           TargetF
cf10: 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74  rameworkAttribut
cf20: 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  e targetFramewor
cf30: 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k =..           
cf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
cf50: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
cf60: 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20 20  ttribute)..     
cf70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf80: 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47 65       assembly.Ge
cf90: 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74 65  tCustomAttribute
cfa0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfc0: 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74 46    typeof(TargetF
cfd0: 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74  rameworkAttribut
cfe0: 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a  e), false)[0];..
cff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d000: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
d010: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e 46  argetFramework.F
d020: 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a 20  rameworkName;.. 
d030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d040: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
d050: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
d060: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
d070: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d090: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
d0a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
d0b0: 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20 20  lif NET_35..    
d0c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d0d0: 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c   ".NETFramework,
d0e0: 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d 0a  Version=v3.5";..
d0f0: 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20 20  #elif NET_20..  
d100: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d110: 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72  rn ".NETFramewor
d120: 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22 3b  k,Version=v2.0";
d130: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
d140: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
d150: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
d160: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
d170: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
d1c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d1d0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 63  y>..      /// Ac
d1e0: 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61 72  cepts a long tar
d1f0: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
d200: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 6e  tribute value an
d210: 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f 20  d makes it into 
d220: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75 63  a..      /// muc
d230: 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69 6f  h shorter versio
d240: 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20  n, suitable for 
d250: 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20 70  use with NuGet p
d260: 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20 20  ackages...      
d270: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d280: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d290: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
d2a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 6f        /// The lo
d2b0: 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  ng target framew
d2c0: 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
d2d0: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  lue to convert..
d2e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
d2f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
d300: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
d310: 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74 61  /// The short ta
d320: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
d330: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 2d  ttribute value -
d340: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
d350: 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  annot..      ///
d360: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 6f   be determined o
d370: 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20 20  r converted...  
d380: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
d390: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
d3a0: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
d3b0: 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65 74  AbbreviateTarget
d3c0: 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20  Framework(..    
d3d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
d3e0: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  ue..          ).
d3f0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
d400: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
d410: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
d420: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
d430: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
d440: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76  ;....          v
d450: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70  alue = value.Rep
d460: 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65 77  lace(".NETFramew
d470: 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c 20  ork,Version=v", 
d480: 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20 20  "net");..       
d490: 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
d4a0: 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53 74  .Replace(".", St
d4b0: 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d 0a  ring.Empty);....
d4c0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
d4d0: 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64 65  dex = value.Inde
d4e0: 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20  xOf(',');....   
d4f0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78         if (index
d500: 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20   != -1)..       
d510: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
d520: 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28 30  alue.Substring(0
d530: 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  , index);....   
d540: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
d550: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  lue;..      }...
d560: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
d570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
d5c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
d5d0: 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c  // If necessary,
d5e0: 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75   replaces all su
d5f0: 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d  pported environm
d600: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
d610: 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ens..      /// w
d620: 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69  ith their associ
d630: 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ated values...  
d640: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d650: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
d660: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
d670: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  ">..      /// A 
d680: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65  setting value re
d690: 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72  ad from an envir
d6a0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e  onment variable.
d6b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
d6c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
d6d0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
d6e0: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
d6f0: 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20  f the <paramref 
d700: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20  name="value" /> 
d710: 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74  will all support
d720: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ed..      /// en
d730: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
d740: 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63  le tokens replac
d750: 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76  ed.  No return v
d760: 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64  alue is reserved
d770: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69  ..      /// to i
d780: 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72  ndicate an error
d790: 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  .  This method c
d7a0: 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20  annot fail...   
d7b0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d7c0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
d7d0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52   static string R
d7e0: 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e  eplaceEnvironmen
d7f0: 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28  tVariableTokens(
d800: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
d810: 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
d820: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
d830: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
d840: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
d850: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
d860: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d870: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
d880: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61  irectory = GetCa
d890: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
d8a0: 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
d8b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
d8c0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
d8d0: 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d  pty(directory)).
d8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
d8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d900: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
d910: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d930: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
d940: 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20  e.Replace(..    
d950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d960: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44 69        AssemblyDi
d970: 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69  rectoryToken, di
d980: 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20  rectory);..     
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
d9a0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
d9b0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
d9c0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
d9d0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
d9e0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
d9f0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
da00: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
da10: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
da20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da30: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
da40: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
da50: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
da60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da70: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
da80: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daa0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
dab0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
dac0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
dad0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daf0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
db00: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22  urrentCulture, "
db10: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22  Native library "
db20: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db40: 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61    "pre-loader fa
db50: 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20  iled to replace 
db60: 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20  assembly " +..  
db70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db80: 20 20 20 20 20 20 20 20 20 20 20 20 22 64 69 72              "dir
db90: 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30  ectory token: {0
dba0: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
dbb0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbe0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dc20: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc40: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
dc70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
dc80: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
dc90: 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d  ssembly = null;.
dca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dcb0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
dcc0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dcd0: 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c           assembl
dce0: 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74  y = Assembly.Get
dcf0: 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c  ExecutingAssembl
dd00: 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  y();..          
dd10: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
dd20: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
dd30: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
dd40: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
dd50: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
dd60: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
dd70: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
dd80: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
dda0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
ddb0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
ddc0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
ddd0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ddf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de00: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
de10: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
de20: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
de30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
de50: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
de60: 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76  tCulture, "Nativ
de70: 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20  e library " +.. 
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
dea0: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6f  ader failed to o
deb0: 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67 20  btain executing 
dec0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
dee0: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
def0: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
df00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
df10: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
df20: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
df50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
df60: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
df70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
df80: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
df90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
dfa0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
dfb0: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20  targetFramework 
dfc0: 3d 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67  = AbbreviateTarg
dfd0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dff0: 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65  GetAssemblyTarge
e000: 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d  tFramework(assem
e010: 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  bly));....      
e020: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
e030: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
e040: 79 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  y(targetFramewor
e050: 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k))..           
e060: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e070: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e0a0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
e0b0: 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a  value.Replace(..
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0d0: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
e0e0: 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20  FrameworkToken, 
e0f0: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29  targetFramework)
e100: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e110: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
e120: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
e130: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
e140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e150: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
e160: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
e170: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
e180: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
e190: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
e1a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
e1b0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e1c0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
e1d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1e0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
e1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e200: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e220: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
e230: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
e240: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e260: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
e270: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
e280: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
e290: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2b0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
e2c0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
e2d0: 72 65 70 6c 61 63 65 20 74 61 72 67 65 74 20 22  replace target "
e2e0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
e2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e300: 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b    "framework tok
e310: 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  en: {0}", e)); /
e320: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
e330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e340: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e350: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e370: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e390: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
e3a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
e3b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
e3c0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
e3d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e3e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e3f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e400: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
e410: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  e;..      }..#en
e420: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
e430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
e480: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e490: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
e4a0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
e4b0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
e4c0: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
e4d0: 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20  sing the XML..  
e4e0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
e4f0: 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f  ation file and/o
e500: 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  r the environmen
e510: 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20  t variables for 
e520: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
e530: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61     /// process a
e540: 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e  nd/or the curren
e550: 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61  t system, when a
e560: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
e570: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e580: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
e590: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
e5a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
e5b0: 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  me of the settin
e5c0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
e5d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
e5e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
e5f0: 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20  efault">..      
e600: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
e610: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
e620: 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20  the setting has 
e630: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
e640: 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f  licitly..      /
e650: 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20  // or cannot be 
e660: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
e670: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
e680: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
e690: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
e6a0: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
e6b0: 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68   setting -OR- th
e6c0: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
e6d0: 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20  specified by..  
e6e0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
e6f0: 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  f name="default"
e700: 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f   /> if it has no
e710: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
e720: 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20  citly or..      
e730: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
e740: 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65  termined.  By de
e750: 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72  fault, all refer
e760: 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e  ences to existin
e770: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  g..      /// env
e780: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
e790: 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e  es will be expan
e7a0: 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72  ded to their cor
e7b0: 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65  responding value
e7c0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  s..      /// wit
e7d0: 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f  hin the value to
e7e0: 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c   be returned unl
e7f0: 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22  ess either the "
e800: 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20  No_Expand" or.. 
e810: 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70       /// "No_Exp
e820: 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61  and_<paramref na
e830: 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e  me="name" />" en
e840: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
e850: 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20  le is set [to.. 
e860: 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e       /// anythin
e870: 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  g]...      /// <
e880: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
e890: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e8a0: 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69   string GetSetti
e8b0: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
e8c0: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
e8d0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
e8e0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
e8f0: 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f  default /* in */
e900: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
e910: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
e920: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e930: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
e940: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e950: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
e960: 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69  special "No_SQLi
e970: 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  teGetSettingValu
e980: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  e" environment..
e990: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
e9a0: 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
e9b0: 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d  et [to anything]
e9c0: 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  , this method wi
e9d0: 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  ll always..     
e9e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
e9f0: 74 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74  turn the default
ea00: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
ea10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ea20: 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
ea30: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
ea40: 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  ariable(..      
ea50: 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51            "No_SQ
ea60: 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61  LiteGetSettingVa
ea70: 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  lue") != null)..
ea80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ea90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
eaa0: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
eab0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
eac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
ead0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
eb20: 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c   if (name == nul
eb30: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
eb40: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
eb50: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
eb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eba0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ebb0: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
ebc0: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
ebd0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
ebe0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ebf0: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20  // NOTE: We are 
ec00: 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20  about to read a 
ec10: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72  setting value fr
ec20: 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  om the environme
ec30: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  nt..          //
ec40: 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62         or possib
ec50: 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20  ly from the XML 
ec60: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
ec70: 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20  le; create or.. 
ec80: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ec90: 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20    increment the 
eca0: 61 70 70 72 6f 70 72 69 61 74 65 20 73 74 61 74  appropriate stat
ecb0: 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20  istic now...    
ecc0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ecd0: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
ece0: 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65  crementSettingRe
ecf0: 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61  adCount(name, fa
ed00: 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lse);..#endif.. 
ed10: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
ed20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
ed30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ed40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
ed80: 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20      bool expand 
ed90: 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45  = true; /* SHARE
eda0: 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d  D: Environment -
edb0: 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20  AND- XML config 
edc0: 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20  file. */....    
edd0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
ee20: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ee30: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ee40: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
ee50: 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  value = null;...
ee60: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
ee70: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
ee80: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
ee90: 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21  e("No_Expand") !
eea0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
eeb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
eec0: 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
eed0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
eee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
eef0: 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
ef00: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
ef10: 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  ariable(..      
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
ef30: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
ef40: 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
ef50: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
ef60: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
ef70: 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61          "No_Expa
ef80: 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20  nd_{0}", name)) 
ef90: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
efa0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
efb0: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
efc0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
efd0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76  }....          v
efe0: 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
eff0: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
f000: 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b  tVariable(name);
f010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
f020: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
f030: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
f040: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
f050: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f060: 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20  expand)..       
f070: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
f080: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45   = Environment.E
f090: 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74  xpandEnvironment
f0a0: 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29  Variables(value)
f0b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f0c0: 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
f0d0: 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ceEnvironmentVar
f0e0: 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75  iableTokens(valu
f0f0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  e);..          }
f100: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
f110: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
f120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f130: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d  return value;...
f140: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
f150: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
f160: 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c  : If the "No_SQL
f170: 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  iteXmlConfigFile
f180: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
f190: 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20  riable is..     
f1a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65       //       se
f1b0: 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c  t [to anything],
f1c0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
f1d0: 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f  l NEVER read fro
f1e0: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  m the..         
f1f0: 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f   //       XML co
f200: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
f210: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
f220: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
f230: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
f240: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
f250: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
f260: 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d      "No_SQLiteXm
f270: 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d  lConfigFile") !=
f280: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f290: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f2a0: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
f2b0: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  lt;..          }
f2c0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
f2d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f320: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
f330: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
f340: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
f350: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f360: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
f370: 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72  e are about to r
f380: 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61  ead a setting va
f390: 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  lue from the XML
f3a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
f3b0: 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
f3c0: 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20  on file; create 
f3d0: 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65  or increment the
f3e0: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
f3f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
f400: 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d   statistic now..
f410: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
f420: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
f430: 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74  ta.IncrementSett
f440: 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d  ingReadCount(nam
f450: 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69  e, true);..#endi
f460: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
f470: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
f480: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
f4d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
f4e0: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69  etSettingValueVi
f4f0: 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d  aXmlConfigFile(.
f500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
f510: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
f520: 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d  gFileName(), nam
f530: 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78 70  e, @default, exp
f540: 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  and);..      }..
f550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
f560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5a0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
f5b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f5c0: 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ORK..      priva
f5d0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
f5e0: 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c   ListToString(IL
f5f0: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74  ist<string> list
f600: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
f610: 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d        if (list =
f620: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f630: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
f640: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
f650: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72   StringBuilder r
f660: 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69  esult = new Stri
f670: 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a  ngBuilder();....
f680: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
f690: 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e  h (string elemen
f6a0: 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20  t in list)..    
f6b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f6c0: 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65         if (eleme
f6d0: 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  nt == null)..   
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
f6f0: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
f700: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
f710: 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  sult.Length > 0)
f720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f730: 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e      result.Appen
f740: 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20  d(' ');....     
f750: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
f760: 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b  Append(element);
f770: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
f780: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
f790: 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e  n result.ToStrin
f7a0: 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  g();..      }...
f7b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
f7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ....      privat
f810: 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68 65  e static int Che
f820: 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72  ckForArchitectur
f830: 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d  esAndPlatforms(.
f840: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
f850: 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  g directory,..  
f860: 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73 74          ref List
f870: 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73  <string> matches
f880: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
f890: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f8a0: 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30    int result = 0
f8b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
f8c0: 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75  f (matches == nu
f8d0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f8e0: 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77     matches = new
f8f0: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b   List<string>();
f900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
f910: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
f920: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
f930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f940: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
f950: 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
f960: 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ory) &&..       
f970: 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63             (proc
f980: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
f990: 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75  ePlatforms != nu
f9a0: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
f9b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f9c0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
f9d0: 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73   (KeyValuePair<s
f9e0: 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70  tring, string> p
f9f0: 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  air..           
fa00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa10: 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63   in processorArc
fa20: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
fa30: 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ms)..           
fa40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa60: 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78  if (Directory.Ex
fa70: 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e  ists(MaybeCombin
fa80: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
fa90: 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20   pair.Key)))..  
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fad0: 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69   matches.Add(pai
fae0: 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20  r.Key);..       
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb00: 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20     result++;..  
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
fb40: 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61  tring value = pa
fb50: 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ir.Value;....   
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb70: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
fb80: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
fb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fba0: 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20   continue;....  
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbc0: 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72      if (Director
fbd0: 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f  y.Exists(MaybeCo
fbe0: 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74  mbinePath(direct
fbf0: 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20  ory, value))).. 
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc30: 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61    matches.Add(va
fc40: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc60: 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20   result++;..    
fc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
fc90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
fca0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fcb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
fcc0: 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
fcd0: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  t;..      }.... 
fce0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
fd30: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
fd40: 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63  static bool Chec
fd50: 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73  kAssemblyCodeBas
fd60: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73  e(..          As
fd70: 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c  sembly assembly,
fd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
fd90: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
fda0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
fdb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fdc0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
fdd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fde0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
fdf0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
fe00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fe10: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
fe20: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
fe30: 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d  codeBase = assem
fe40: 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d  bly.CodeBase;...
fe50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
fe60: 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
fe70: 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65  OrEmpty(codeBase
fe80: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
fe90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
fea0: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
feb0: 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e       Uri uri = n
fec0: 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29  ew Uri(codeBase)
fed0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
fee0: 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c   string localFil
fef0: 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61  eName = uri.Loca
ff00: 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  lPath;....      
ff10: 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c          if (!Fil
ff20: 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69  e.Exists(localFi
ff30: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ff50: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
ff60: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
ff70: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
ff80: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
ff90: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
ffa0: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c          localFil
ffb0: 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
ffc0: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
ffd0: 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43       string xmlC
ffe0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
fff0: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
10000 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10010 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20       directory, 
10020 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
10030 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
10040 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
10050 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69  ists(xmlConfigFi
10060 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
10070 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
10080 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
10090 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
100a0 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
100b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
100c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
100d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100e0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
100f0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
10100 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
10110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10120 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
10130 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
10140 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
10150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10160 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
10170 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f  ry pre-loader fo
10180 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  und XML configur
10190 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a  ation file " +..
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101b0 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63            "via c
101c0 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72  ode base for cur
101d0 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
101e0 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d   assembly: \"{0}
101f0 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  \"",..          
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10210 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  xmlConfigFileNam
10220 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
10230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10240 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10250 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
10260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10270 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10280 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
10290 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
102a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
102b0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
102c0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
102d0 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65  Name = localFile
102e0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
102f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10300 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
10310 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10320 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72          List<str
10330 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e  ing> matches = n
10340 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
10350 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b 46        if (CheckF
10360 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41  orArchitecturesA
10370 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65  ndPlatforms(dire
10380 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68  ctory, ref match
10390 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  es) > 0)..      
103a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
103b0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
103c0 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
103d0 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
103e0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
103f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10410 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
10420 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
10430 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
10440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10450 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
10460 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
10470 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
10480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10490 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
104a0 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f  ry pre-loader fo
104b0 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64  und native sub-d
104c0 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a  irectories " +..
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104e0 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63            "via c
104f0 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72  ode base for cur
10500 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
10510 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d   assembly: \"{0}
10520 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  \"",..          
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10540 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74  ListToString(mat
10550 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f  ches))); /* thro
10560 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
10570 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
10590 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
105a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
105c0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105e0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
105f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10600 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c  fileName = local
10610 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
10630 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
10640 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10650 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10660 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
10670 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
10680 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
10690 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
106a0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
106b0 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
106c0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
106d0 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
106e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
106f0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
10700 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
10710 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
10720 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10730 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10750 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
10760 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
10770 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
10780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10790 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
107a0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107c0 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
107d0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
107e0 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b   failed to check
107f0 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a   code base " +..
10800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10810 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65        "for curre
10820 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
10830 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
10840 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
10850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
10860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10870 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
10880 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10890 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
108a0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
108b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
108c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
108d0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
108e0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
108f0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
10900 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
10950 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10960 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65  y>..      /// Re
10970 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64 20  sets the cached 
10980 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
10990 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66  ry value, thus f
109a0 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74 0d  orcing the next.
109b0 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20  .      /// call 
109c0 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  to <see cref="Ge
109d0 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
109e0 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
109f0 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20  hod to rely..   
10a00 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20     /// upon the 
10a10 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73  <see cref="GetAs
10a20 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
10a30 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65   /> method to fe
10a40 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  tch the..      /
10a50 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65  // assembly dire
10a60 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ctory...      //
10a70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10a80 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
10a90 69 63 20 76 6f 69 64 20 52 65 73 65 74 43 61 63  ic void ResetCac
10aa0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
10ab0 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
10ac0 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
10ad0 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
10ae0 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
10af0 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
10b00 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
10b10 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
10b20 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d  ResetCachedAssem
10b30 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d  blyDirectory");.
10b40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
10b50 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
10b60 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
10b70 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
10b80 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63               cac
10ba0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
10bb0 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  tory = null;..  
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73              noAs
10bd0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20  semblyDirectory 
10be0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
10bf0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
10c00 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
10c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c50 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
10c60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10c70 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
10c80 74 75 72 6e 73 20 74 68 65 20 63 61 63 68 65 64  turns the cached
10c90 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
10ca0 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
10cb0 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ently..      ///
10cc0 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 2c   being executed,
10cd0 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20 20   if available.  
10ce0 49 66 20 74 68 65 20 63 61 63 68 65 64 20 61 73  If the cached as
10cf0 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79  sembly directory
10d00 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f   value..      //
10d10 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  / is not availab
10d20 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  le, the <see cre
10d30 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
10d40 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
10d50 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f  od will..      /
10d60 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62  // be used to ob
10d70 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c  tain the assembl
10d80 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  y directory...  
10d90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10da0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
10db0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
10dc0 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79  // The directory
10dd0 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
10de0 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e  y currently bein
10df0 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20  g executed -OR- 
10e00 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f  null if..      /
10e10 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  // it cannot be 
10e20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
10e30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10e40 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
10e50 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
10e60 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
10e70 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20  Directory()..   
10e80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10e90 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
10ea0 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
10eb0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
10ec0 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
10ed0 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
10ee0 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41 73  thod_GetCachedAs
10ef0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
10f00 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
10f10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
10f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
10f30 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
10f40 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
10f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f60 69 66 20 28 63 61 63 68 65 64 41 73 73 65 6d 62  if (cachedAssemb
10f70 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20 6e  lyDirectory != n
10f80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10f90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
10fa0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
10fb0 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
10fc0 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 41           if (noA
10fd0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
10fe0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10ff0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
11000 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
11010 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
11020 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69  rn GetAssemblyDi
11030 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
11040 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11090 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
110a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
110b0 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
110c0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64  nd returns the d
110d0 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
110e0 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
110f0 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20  tly being..     
11100 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a   /// executed...
11110 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11120 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11130 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
11140 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f   /// The directo
11150 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
11160 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
11170 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52  ing executed -OR
11180 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20  - null if..     
11190 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62   /// it cannot b
111a0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
111b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
111c0 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
111d0 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
111e0 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
111f0 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
11200 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
11210 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
11220 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
11230 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
11240 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
11250 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
11260 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65  _GetAssemblyDire
11270 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66  ctory");..#endif
11280 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
11290 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
112a0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
112b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
112c0 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
112d0 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
112e0 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
112f0 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
11300 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
11310 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
11320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11340 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
11350 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
11360 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11380 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
11390 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65  Directory = true
113a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
113b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
113c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
113d0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
113e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
113f0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
11400 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c  g fileName = nul
11410 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  l;....#if PLATFO
11420 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11430 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
11440 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20     AssemblyName 
11450 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61  assemblyName = a
11460 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28  ssembly.GetName(
11470 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11480 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
11490 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
114a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
114b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114c0 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
114d0 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
114e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
114f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11500 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69      noAssemblyDi
11510 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d  rectory = true;.
11520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11530 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11540 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11550 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
11560 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11570 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
11580 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  e = assemblyName
11590 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73  .CodeBase;..#els
115a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
115b0 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d   if (!CheckAssem
115c0 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65  blyCodeBase(asse
115d0 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61  mbly, ref fileNa
115e0 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
115f0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
11600 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
11610 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
11620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
11630 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
11640 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
11650 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11660 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11670 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
11680 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
11690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
116b0 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
116c0 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
116d0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
116e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11700 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
11710 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
11720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11730 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
11740 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
11750 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29  ryName(fileName)
11760 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11770 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
11780 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
11790 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
117a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
117b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
117c0 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
117d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
117e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
11800 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11810 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11840 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11860 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
11870 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
11880 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
11890 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63               cac
118b0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
118c0 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79  tory = directory
118d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
118e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
118f0 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
11900 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
11910 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
11920 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
11930 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
11940 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
11950 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
11960 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
11970 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
11980 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  if..          {.
11990 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
119a0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
119b0 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
119c0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
119d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
119e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
119f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
11a00 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
11a10 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
11a30 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
11a40 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
11a70 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69  y pre-loader fai
11a80 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72 65 63  led to get direc
11a90 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  tory " +..      
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ab0 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65  "for currently e
11ac0 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
11ad0 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  y: {0}", e)); /*
11ae0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
11af0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11b00 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
11b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b30 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
11b40 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
11b50 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
11b60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11b70 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
11b80 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
11b90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11ba0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
11bb0 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
11bc0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ue;..          }
11bd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
11be0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
11bf0 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
11c00 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
11c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11c60 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e    #region Option
11c70 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65  al Native SQLite
11c80 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61   Library Pre-Loa
11c90 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20  ding Code..     
11ca0 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
11cb0 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f  TE: If we are lo
11cc0 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74  oking for the st
11cd0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c  andard SQLite DL
11ce0 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22  L ("sqlite3.dll"
11cf0 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ),..      //    
11d00 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44     the interop D
11d10 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65  LL ("SQLite.Inte
11d20 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65  rop.dll"), or we
11d30 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20   are running on 
11d40 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
11d50 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74      .NET Compact
11d60 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73   Framework, we s
11d70 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68  hould include th
11d80 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66  is code (only if
11d90 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
11da0 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73       feature has
11db0 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65   actually been e
11dc0 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63  nabled).  This c
11dd0 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74  ode would be tot
11de0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ally..      //  
11df0 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69       redundant i
11e00 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61  f this module ha
11e10 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69  s been bundled i
11e20 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  nto the mixed-mo
11e30 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  de..      //    
11e40 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20     assembly...  
11e50 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49      //..#if SQLI
11e60 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55  TE_STANDARD || U
11e70 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c  SE_INTEROP_DLL |
11e80 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  | PLATFORM_COMPA
11e90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20  CTFRAMEWORK.... 
11ea0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
11eb0 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d  / NOTE: Only com
11ec0 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69  pile in the nati
11ed0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
11ee0 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20  oad code if the 
11ef0 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f  feature..      /
11f00 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e  /       has been
11f10 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69   enabled for thi
11f20 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20  s build...      
11f30 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  //..#if PRELOAD_
11f40 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
11f50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11f60 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
11f70 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
11f80 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
11f90 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ble containing t
11fa0 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
11fb0 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
11fc0 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
11fd0 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
11fe0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11ff0 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
12000 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
12010 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53  y string PROCESS
12020 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
12030 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52  =..          "PR
12040 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
12050 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  TURE";....      
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
120b0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
120c0 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f  te Data..      /
120d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
120e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
120f0 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e  ve module file n
12100 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
12110 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
12120 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  y or null...    
12130 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12140 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
12150 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f   static string _
12160 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
12170 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c  leFileName = nul
12180 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  l;....      ////
12190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
121e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
121f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
12200 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
12210 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
12220 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
12230 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  the value..     
12240 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f   /// IntPtr.Zero
12250 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
12260 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
12270 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
12280 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69  tPtr _SQLiteNati
12290 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
122a0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
122b0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
122c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
122d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12310 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
12320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
12330 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68  // Determines th
12340 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
12350 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64 69   (without any di
12360 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61 74  rectory informat
12370 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion)..      /// 
12380 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
12390 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f  QLite library to
123a0 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62   be pre-loaded b
123b0 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  y this class... 
123c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
123d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
123e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
123f0 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69 6c  /// The base fil
12400 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
12410 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
12420 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c  rary to be pre-l
12430 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20 20  oaded by..      
12440 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20 2d  /// this class -
12450 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73 20  OR- null if its 
12460 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65 20  value cannot be 
12470 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
12480 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
12490 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
124a0 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
124b0 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79  GetNativeLibrary
124c0 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a  FileNameOnly()..
124d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
124e0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
124f0 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74 74  meOnly = GetSett
12500 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
12510 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
12520 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79 46  dSQLite_LibraryF
12530 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75  ileNameOnly", nu
12540 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
12550 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e    if (fileNameOn
12560 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly != null)..   
12570 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12580 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d  n fileNameOnly;.
12590 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
125a0 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b 20  urn SQLITE_DLL; 
125b0 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20  /* COMPAT */..  
125c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
125d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12610 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
12620 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12630 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68 65       /// Searche
12640 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  s for the native
12650 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
12660 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  in the directory
12670 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
12680 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d     /// the assem
12690 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
126a0 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73 20  ing executed as 
126b0 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73 65  well as the base
126c0 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   directory..    
126d0 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63 75    /// for the cu
126e0 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
126f0 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
12700 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12710 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
12720 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65  m name="baseDire
12730 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
12740 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
12750 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
12760 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
12770 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65   to refer to the
12780 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   base..      ///
12790 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
127a0 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ining the native
127b0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
127c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
127d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
127e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
127f0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12800 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
12810 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
12820 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
12830 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  l be modified to
12840 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e 61   refer to the na
12850 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66  me..      /// of
12860 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 64   the immediate d
12870 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20 74  irectory (i.e. t
12880 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  he offset from t
12890 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
128a0 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  y)..      /// co
128b0 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74  ntaining the nat
128c0 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
128d0 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
128e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
128f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
12900 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
12910 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74 68   (success) if th
12920 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
12930 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75 6e  library was foun
12940 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  d; otherwise,.. 
12950 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28 66       /// zero (f
12960 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20 20  ailure)...      
12970 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
12980 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
12990 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63 68  atic bool Search
129a0 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
129b0 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
129c0 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
129d0 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  y,        /* out
129e0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
129f0 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73  ef string proces
12a00 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
12a10 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
12a20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
12a30 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
12a40 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
12a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a60 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
12a70 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65 63  NoSearchForDirec
12a80 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  tory", null) != 
12a90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12aa0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12ab0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
12ac0 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d 0a  /* DISABLED */..
12ad0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12ae0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12af0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
12b00 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61  Determine the ba
12b10 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
12b20 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
12b30 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
12b40 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12b50 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b  If this is not k
12b60 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61  nown by this cla
12b70 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f  ss, we cannot co
12b80 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20  ntinue...       
12b90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12ba0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
12bb0 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65  Only = GetNative
12bc0 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
12bd0 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
12be0 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
12bf0 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Only == null).. 
12c00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12c10 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
12c20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12c30 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
12c40 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f 66  uild the list of
12c50 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69 65   base directorie
12c60 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 2f  s and processor/
12c70 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20 20  platform..      
12c80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61 6d      //       nam
12c90 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74 73  es.  These lists
12ca0 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f   will be used to
12cb0 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68 65   help locate the
12cc0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
12cd0 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69     //       SQLi
12ce0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
12cf0 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73 65  (or interop asse
12d00 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f 61  mbly) to pre-loa
12d10 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20  d into..        
12d20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73 20    //       this 
12d30 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
12d40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12d50 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65 63    string[] direc
12d60 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20  tories = {..    
12d70 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73 73            GetAss
12d80 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
12d90 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ,..#if !PLATFORM
12da0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12db0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
12dc0 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
12dd0 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
12de0 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66 0d  ectory,..#endif.
12df0 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d  .          };...
12e00 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
12e10 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72 69  g[] subDirectori
12e20 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
12e30 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73 73        GetProcess
12e40 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
12e50 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d  , GetPlatformNam
12e60 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  e(null)..       
12e70 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
12e80 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69     foreach (stri
12e90 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20  ng directory in 
12ea0 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20 20  directories)..  
12eb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12ec0 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
12ed0 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
12ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ef0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
12f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
12f10 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73 75  reach (string su
12f20 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73 75  bDirectory in su
12f30 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20  bDirectories).. 
12f40 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f60 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74 6f    if (subDirecto
12f70 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
12f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f90 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fb0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
12fc0 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
12fd0 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
12fe0 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
12ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
13000 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
13010 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69 72  irectory, subDir
13020 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20 20  ectory),..      
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13040 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
13050 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13060 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13070 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
13080 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69 74  TE: If the SQLit
13090 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73 74  e DLL file exist
130a0 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65 73  s, return succes
130b0 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
130c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50        //       P
130d0 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69 6e  rior to returnin
130e0 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65 20  g, set the base 
130f0 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a 20  directory and.. 
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13110 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
13120 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
13130 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65 20   to reflect the 
13140 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  location..      
13150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13160 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77 61       where it wa
13170 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20  s found...      
13180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131a0 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
131b0 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
131c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131d0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
131e0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
131f0 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13210 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
13220 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13240 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
13250 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
13260 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
13270 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
13280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13290 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
132a0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
132b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
132d0 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
132e0 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20  re-loader found 
132f0 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b 0d  native file " +.
13300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13320 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72 65  name \"{0}\", re
13330 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f 72  turning director
13340 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22 20  y \"{1}\" and " 
13350 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
13360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13370 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20   "sub-directory 
13380 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c  \"{2}\"...", fil
13390 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72 79  eName, directory
133a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
133b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133c0 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29 3b   subDirectory));
133d0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
133e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
13410 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
13420 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13440 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
13450 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
13460 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13470 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
13480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13490 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
134a0 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
134b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134c0 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
134d0 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69 72  tecture = subDir
134e0 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13500 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46  eturn true; /* F
13510 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  OUND */..       
13520 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13530 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13540 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
13550 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
13560 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55  alse; /* NOT FOU
13570 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  ND */..      }..
13580 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
13590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135d0 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
135e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
135f0 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
13600 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 64  turns the base d
13610 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20  irectory of the 
13620 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
13630 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ion..      /// d
13640 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  omain...      //
13650 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13660 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
13670 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13680 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
13690 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
136a0 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
136b0 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  in -OR- null if 
136c0 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  it..      /// ca
136d0 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
136e0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
136f0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
13700 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
13710 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44 69  string GetBaseDi
13720 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
13730 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
13740 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
13750 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
13760 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
13770 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
13780 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a  nment variable..
13790 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
137a0 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20 69     is set, use i
137b0 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74  t verbatim for t
137c0 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
137d0 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
137e0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
137f0 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47  ng directory = G
13800 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22  etSettingValue("
13810 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
13820 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20  seDirectory",.. 
13830 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c               nul
13840 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
13850 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21   if (directory !
13860 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13870 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
13880 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20  rectory;....#if 
13890 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
138a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
138b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
138c0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
138d0 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
138e0 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69  te_UseAssemblyDi
138f0 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e  rectory" environ
13900 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
13910 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
13920 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79  e is set (to any
13930 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74 74  thing), then att
13940 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 0d  empt to use the.
13950 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
13960 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63 6f      directory co
13970 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72  ntaining the cur
13980 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
13990 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
139a0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
139b0 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  .e. System.Data.
139c0 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64 20  SQLite) intsead 
139d0 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  of the applicati
139e0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  on..          //
139f0 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62 61         domain ba
13a00 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
13a10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13a20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
13a30 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
13a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13a50 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73  PreLoadSQLite_Us
13a60 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  eAssemblyDirecto
13a70 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  ry", null) != nu
13a80 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
13a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13aa0 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
13ab0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
13ac0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
13ad0 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
13ae0 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
13af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13b00 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
13b10 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
13b20 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13b30 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
13b40 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
13b50 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
13b60 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
13b70 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y of the..      
13b80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72      //       cur
13b90 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
13ba0 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
13bb0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13bc0 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61    return AppDoma
13bd0 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
13be0 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d  .BaseDirectory;.
13bf0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
13c00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13c10 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
13c20 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
13c30 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63 74  using the direct
13c40 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ory containing..
13c50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13c60 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79     the currently
13c70 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
13c80 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  bly...          
13c90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
13ca0 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79  turn GetAssembly
13cb0 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65  Directory();..#e
13cc0 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
13cd0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13d30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13d40 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
13d50 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
13d60 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
13d70 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66  e requires a suf
13d80 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  fix..      /// a
13d90 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65  nd adds it if ne
13da0 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
13db0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13dc0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
13dd0 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
13de0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13df0 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69   original dynami
13e00 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
13e10 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70  ile name to insp
13e20 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
13e30 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13e40 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
13e50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e       /// The dyn
13e60 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
13e70 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73  y file name, pos
13e80 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74  sibly modified t
13e90 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20  o include an..  
13ea0 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f      /// extensio
13eb0 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
13ec0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13ed0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
13ee0 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69  tring FixUpDllFi
13ef0 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  leName(..       
13f00 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
13f10 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  me /* in */..   
13f20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13f30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
13f40 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
13f50 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
13f60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
13f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13f80 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e   (HelperMethods.
13f90 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20  IsWindows())..  
13fa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fc0 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45   if (!fileName.E
13fd0 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45  ndsWith(DllFileE
13fe0 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20  xtension,..     
13ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14000 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
14010 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
14020 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20  oreCase))..     
14030 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14050 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
14060 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45  eName + DllFileE
14070 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  xtension;..     
14080 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
140a0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
140b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
140c0 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
140d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
14130 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14140 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
14150 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70  nd returns the p
14160 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
14170 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
14180 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rent..      /// 
14190 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
141a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
141b0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
141c0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
141d0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
141e0 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
141f0 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
14200 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
14210 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e  ..      /// cann
14220 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
14230 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
14240 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
14250 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
14260 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f  ring GetProcesso
14270 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d  rArchitecture().
14280 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
14290 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
142a0 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
142b0 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e "PreLoadSQLite
142c0 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  _ProcessorArchit
142d0 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d  ecture" environm
142e0 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
142f0 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65  /       variable
14300 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20   is set, use it 
14310 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65  verbatim for the
14320 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
14330 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  or..          //
14340 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63 74         architect
14350 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
14360 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
14370 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
14380 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
14390 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
143a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
143b0 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63  eLoadSQLite_Proc
143c0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
143d0 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  e", null);....  
143e0 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
143f0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
14400 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
14410 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14420 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
14430 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
14440 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14450 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
14460 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
14470 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
14480 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14490 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
144a0 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
144b0 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52 4f  SettingValue(PRO
144c0 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
144d0 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  URE, null);.... 
144e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
144f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14530 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14540 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14550 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
14560 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43            // HAC
14570 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 20  K: Check for an 
14580 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69 74  "impossible" sit
14590 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  uation.  If the 
145a0 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20  pointer size..  
145b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
145c0 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68 65   is 32-bits, the
145d0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
145e0 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20 62  tecture cannot b
145f0 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20  e "AMD64"...    
14600 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49        //       I
14610 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65 20  n that case, we 
14620 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61  are almost certa
14630 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20 62  inly hitting a b
14640 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ug in the..     
14650 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70       //       op
14660 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61  erating system a
14670 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74 75  nd/or Visual Stu
14680 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73 20  dio that causes 
14690 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
146a0 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53 4f  /       PROCESSO
146b0 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 65  R_ARCHITECTURE e
146c0 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
146d0 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ble to contain t
146e0 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
146f0 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61 6c         wrong val
14700 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63 75  ue in some circu
14710 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61 73  mstances.  Pleas
14720 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b 65  e refer to ticke
14730 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
14740 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36 31        [9ac986261
14750 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20 69  1] for further i
14760 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
14770 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14780 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74 72       if ((IntPtr
14790 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28  .Size == sizeof(
147a0 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20 20  int)) &&..      
147b0 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45          String.E
147c0 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72 41  quals(processorA
147d0 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41 4d  rchitecture, "AM
147e0 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  D64",..         
147f0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
14800 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
14810 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20  lIgnoreCase)).. 
14820 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
14830 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
14840 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
14850 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
14860 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14870 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65      // NOTE: Whe
14880 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61  n tracing is ena
14890 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f  bled, save the o
148a0 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74  riginally detect
148b0 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
148c0 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
148d0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
148e0 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e  e before changin
148f0 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  g it...         
14900 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14910 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 61         string sa
14920 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68  vedProcessorArch
14930 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65  itecture = proce
14940 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
14950 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
14960 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
14970 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
14980 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68  NOTE: We know th
14990 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  at operating sys
149a0 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e  tems that return
149b0 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20   "AMD64" as..   
149c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
149d0 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f      the processo
149e0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 61  r architecture a
149f0 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75  re actually a su
14a00 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20  perset of..     
14a10 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
14a20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f 63    the "x86" proc
14a30 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
14a40 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72  re; therefore, r
14a50 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20  eturn..         
14a60 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78       //       "x
14a70 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69  86" when the poi
14a80 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d  nter size is 32-
14a90 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  bits...         
14aa0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14ab0 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
14ac0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 22  Architecture = "
14ad0 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  x86";....#if !NE
14ae0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
14af0 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
14b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
14b10 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
14b20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14b30 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
14b50 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20  NOTE: Show that 
14b60 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79 20  we hit a fairly 
14b70 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f  unusual situatio
14b80 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20  n (i.e...       
14b90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
14ba0 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22 20      the "wrong" 
14bb0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
14bc0 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65 63  ecture was detec
14bd0 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20  ted)...         
14be0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
14c00 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
14c10 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
14c20 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
14c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c40 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
14c50 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
14c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c70 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
14c80 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
14c90 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69 74  detected {0}-bit
14ca0 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20 20   pointer " +..  
14cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14cc0 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20 70      "size with p
14cd0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
14ce0 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20 75  cture \"{1}\", u
14cf0 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20  sing " +..      
14d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d10 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69  "processor archi
14d20 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20  tecture \"{2}\" 
14d30 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20  instead...",..  
14d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d50 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 20      IntPtr.Size 
14d60 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c 20  * 8 /* bits */, 
14d70 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72  savedProcessorAr
14d80 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20  chitecture,..   
14d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14da0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
14db0 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20 74  itecture)); /* t
14dc0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
14dd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14de0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
14df0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e10 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
14e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14e30 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
14e40 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20       }..#else.. 
14e50 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
14e60 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
14e70 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
14e80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14e90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
14ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
14eb0 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43  E: On the .NET C
14ec0 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
14ed0 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65  , attempt to use
14ee0 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
14ef0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
14f00 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66 75      Win32 API fu
14f10 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e  nction (via P/In
14f20 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70  voke) that can p
14f30 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20 20  rovide us..     
14f40 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
14f50 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63 65    with the proce
14f60 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14f70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
14f80 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14f90 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
14fa0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14fb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fd0 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f    // NOTE: The o
14fe0 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65 74  utput of the Get
14ff0 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63 74  SystemInfo funct
15000 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ion will be..   
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15020 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20 68  /       placed h
15030 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70  ere.  Only the p
15040 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
15050 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20 20  cture field..   
15060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15070 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20  /       is used 
15080 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d  by this method..
15090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
150a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
150b0 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
150c0 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33  ativeMethodsWin3
150d0 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79  2.SYSTEM_INFO sy
150e0 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20  stemInfo;....   
150f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15100 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
15110 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51 75       // NOTE: Qu
15120 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20 69  ery the system i
15130 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20 50  nformation via P
15140 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a 20  /Invoke, thus.. 
15150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15160 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69 6e   //       fillin
15170 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65 2e  g the structure.
15180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15190 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
151a0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
151b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
151c0 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  32.GetSystemInfo
151d0 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f 29  (out systemInfo)
151e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
151f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
15200 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15210 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68 65  NOTE: Return the
15220 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
15230 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61 73  tecture value as
15240 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20   a string...    
15250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15270 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
15280 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20 20  hitecture =..   
15290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152a0 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50     systemInfo.wP
152b0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
152c0 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ture.ToString();
152d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
152e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
152f0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
15300 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
15320 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
15330 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
15340 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15360 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c   NOTE: Upon fail
15370 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20 65  ure, return an e
15380 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54 68  mpty string.  Th
15390 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d  is will prevent.
153a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
153b0 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c 6c  /       the call
153c0 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20  ing method from 
153d0 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69 73  considering this
153e0 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a   method call a..
153f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15400 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65 22         "failure"
15410 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15420 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15430 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
15440 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69 6e  itecture = Strin
15450 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20  g.Empty;..      
15460 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
15470 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
15480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
154d0 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72  turn processorAr
154e0 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20  chitecture;..   
154f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
15550 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15560 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68      /// Given th
15570 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
15580 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e  itecture, return
15590 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
155a0 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20  e platform...   
155b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
155c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
155d0 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
155e0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
155f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
15600 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
15610 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72  tecture to be tr
15620 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c  anslated to a pl
15630 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
15640 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
15650 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
15660 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
15670 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   The platform na
15680 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  me for the speci
15690 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  fied processor a
156a0 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d  rchitecture -OR-
156b0 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   null..      ///
156c0 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
156d0 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
156e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
156f0 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
15700 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
15710 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
15720 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
15730 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
15740 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a  itecture /* in *
15750 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
15760 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15770 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
15780 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
15790 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
157a0 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
157b0 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
157c0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
157d0 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  cture();....    
157e0 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
157f0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70  .IsNullOrEmpty(p
15800 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
15810 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20  ture))..        
15820 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
15830 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
15840 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
15850 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
15860 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15870 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
15880 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
15890 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  orms == null).. 
158a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
158b0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
158c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
158d0 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
158e0 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
158f0 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
15900 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
15910 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61  atforms.TryGetVa
15920 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
15930 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
15940 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15950 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e  e, out platformN
15960 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
15970 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15980 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15990 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
159a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
159b0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
159c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
159d0 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
159e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
159f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
15a40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15a50 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
15a60 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  oad the native S
15a70 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62 61  QLite library ba
15a80 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69  sed on the speci
15a90 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fied..      /// 
15aa0 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72  directory and pr
15ab0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
15ac0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ture...      ///
15ad0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15ae0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
15af0 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72  me="baseDirector
15b00 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  y">..      /// T
15b10 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
15b20 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66  y to use, null f
15b30 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20  or default (the 
15b40 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
15b50 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  f..      /// the
15b60 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
15b70 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54  tion domain).  T
15b80 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68  his directory sh
15b90 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65  ould contain the
15ba0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
15bb0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
15bc0 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d  re specific sub-
15bd0 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20  directories...  
15be0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
15bf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
15c00 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
15c10 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
15c20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
15c30 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73  requested proces
15c40 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
15c50 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75  , null for defau
15c60 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f  lt (the..      /
15c70 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
15c80 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
15c90 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
15ca0 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20  ).  This caller 
15cb0 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f  should..      //
15cc0 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20  / almost always 
15cd0 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72  specify null for
15ce0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e   this parameter.
15cf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
15d00 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
15d10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
15d20 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
15d30 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
15d40 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61 74  he candidate nat
15d50 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
15d60 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c  name to load wil
15d70 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72 65  l be stored here
15d80 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  ,..      /// if 
15d90 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
15da0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
15db0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15dc0 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
15dd0 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20  uleHandle">..   
15de0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15df0 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
15e00 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 4c  as returned by L
15e10 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c 20  oadLibrary will 
15e20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20 20  be stored..     
15e30 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e 65   /// here, if ne
15e40 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20 76  cessary.  This v
15e50 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e 74  alue will be Int
15e60 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65 20  Ptr.Zero if the 
15e70 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f  call to..      /
15e80 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 66  // LoadLibrary f
15e90 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ails...      ///
15ea0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
15eb0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
15ec0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
15ed0 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ro if the native
15ee0 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61 64   module was load
15ef0 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 3b  ed successfully;
15f00 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   otherwise,..   
15f10 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20     /// zero...  
15f20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
15f30 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
15f40 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72  e static bool Pr
15f50 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d  eLoadSQLiteDll(.
15f60 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
15f70 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  g baseDirectory,
15f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
15f90 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
15fa0 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
15fb0 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20 20  Architecture,   
15fc0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
15fd0 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
15fe0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
15ff0 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  Name, /* out */.
16000 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49  .          ref I
16010 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64 75  ntPtr nativeModu
16020 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f  leHandle    /* o
16030 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
16040 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
16050 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16060 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
16070 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
16080 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69 73  ase directory is
16090 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64   null, use the d
160a0 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20 20  efault..        
160b0 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e    //       (i.e.
160c0 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74 6f   attempt to auto
160d0 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74  matically detect
160e0 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20 20   it)...         
160f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
16100 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
16110 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
16120 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
16130 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65  ectory = GetBase
16140 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a  Directory();....
16150 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16160 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
16170 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
16180 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65 20   query the base 
16190 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20  directory, stop 
161a0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
161b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
161c0 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20   (baseDirectory 
161d0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
161e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
161f0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
16200 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16210 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d   // NOTE: Determ
16220 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69 6c  ine the base fil
16230 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
16240 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
16250 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  rary...         
16260 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 69   //       If thi
16270 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62  s is not known b
16280 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65  y this class, we
16290 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65   cannot continue
162a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
162b0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
162c0 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d  g fileNameOnly =
162d0 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
162e0 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b  yFileNameOnly();
162f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
16300 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d   (fileNameOnly =
16310 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
16320 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
16330 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
16340 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16350 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
16360 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
16370 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e 20  brary exists in 
16380 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
16390 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ry..          //
163a0 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20 73         itself, s
163b0 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
163c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
163d0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
163e0 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
163f0 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
16400 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63 74  ePath(baseDirect
16410 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
16420 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79      fileNameOnly
16430 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
16440 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
16450 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
16460 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16470 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
16480 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16490 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
164a0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
164b0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
164c0 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73  ture is null, us
164d0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
164e0 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75 6c   //       defaul
164f0 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  t...          //
16500 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
16510 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16520 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
16530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
16540 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16550 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73  ure = GetProcess
16560 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
16570 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
16580 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
16590 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c  NOTE: If we fail
165a0 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
165b0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
165c0 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77  ecture, stop now
165d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
165e0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
165f0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
16600 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
16610 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
16620 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
16630 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16640 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
16650 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
16660 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
16670 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
16680 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
16690 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
166a0 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  ry using the pro
166b0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
166c0 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ure name...     
166d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
166e0 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69     fileName = Fi
166f0 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
16700 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
16710 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
16720 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
16730 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
16740 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16750 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d 65  cture), fileName
16760 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
16770 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16780 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
16790 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73  he file name bas
167a0 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73  ed on the proces
167b0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
167c0 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
167d0 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64   // is not found
167e0 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20  , try using the 
167f0 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66  associated platf
16800 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
16810 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16820 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
16830 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
16840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16860 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16870 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
16880 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
16890 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
168a0 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20  cture to a..    
168b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
168c0 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65     platform name
168d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
168e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
168f0 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
16900 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74  rmName = GetPlat
16910 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73  formName(process
16920 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
16930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16940 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16950 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
16960 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61  we failed to tra
16970 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66  nslate the platf
16980 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e  orm name, stop n
16990 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
169a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
169b0 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72       if (platfor
169c0 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  mName == null)..
169d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
169e0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
169f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16a00 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
16a10 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
16a20 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20  d the full path 
16a30 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  and file name fo
16a40 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
16a50 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ite..           
16a60 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
16a70 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c  ary using the pl
16a80 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
16a90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
16aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
16ab0 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
16ac0 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43  lFileName(MaybeC
16ad0 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65  ombinePath(Maybe
16ae0 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20  CombinePath(..  
16af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b00 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70  baseDirectory, p
16b10 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66 69  latformName), fi
16b20 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
16b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16b40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16b50 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
16b60 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65   file does not e
16b70 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69 6e  xist, skip tryin
16b80 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20  g to load it... 
16b90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
16ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
16bb0 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
16bc0 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
16bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
16be0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
16bf0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16c00 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
16c10 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
16c20 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
16c30 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
16c40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
16c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
16c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16c70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16c80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
16c90 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20  E: Show exactly 
16ca0 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79  where we are try
16cb0 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  ing to load the 
16cc0 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
16cd0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
16ce0 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72     SQLite librar
16cf0 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20  y from...       
16d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
16d30 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
16d40 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
16d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d60 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
16d70 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
16d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16d90 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
16da0 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
16db0 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c  r is trying to l
16dc0 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
16dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16de0 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
16df0 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e  brary \"{0}\"...
16e00 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  ", fileName)); /
16e10 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
16e20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
16e30 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
16e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16e60 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
16e70 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
16e80 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
16e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16eb0 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
16ec0 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
16ed0 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
16ee0 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
16ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16f00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
16f10 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
16f20 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
16f30 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
16f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16f50 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
16f60 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20 20   an exception.  
16f70 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74 68  This must use th
16f80 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
16f90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16fa0 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d        P/Invoke m
16fb0 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63 75  ethod for the cu
16fc0 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67 20  rrent operating 
16fd0 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20  system...       
16fe0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16ff0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
17000 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
17010 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
17020 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
17030 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e 61  oduleHandle = Na
17040 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65  tiveLibraryHelpe
17050 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  r.LoadLibrary(fi
17060 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
17070 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17080 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61   (nativeModuleHa
17090 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
170a0 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
170b0 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
170c0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
170d0 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
170e0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
170f0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
17100 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
17110 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
17120 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
17130 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
17140 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
17150 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
17160 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
17170 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
171a0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72      // NOTE: Fir
171b0 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61 73  st, grab the las
171c0 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e 75  t Win32 error nu
171d0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  mber...         
171e0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
171f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17200 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d  nt lastError = M
17210 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57 69  arshal.GetLastWi
17220 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74  n32Error(); /* t
17230 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
17240 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17260 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
17270 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65 64   where we failed
17280 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
17290 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
172a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
172b0 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66         library f
172c0 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74  rom along with t
172d0 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63  he Win32 error c
172e0 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ode and..       
172f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
17300 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e      exception in
17310 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17340 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
17350 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
17360 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
17370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17380 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
17390 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
173a0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
173b0 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
173c0 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
173d0 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c  ader failed to l
173e0 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
173f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17400 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
17410 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67  brary \"{0}\" (g
17420 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31  etLastError = {1
17430 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  }): {2}",..     
17440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17450 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45   fileName, lastE
17460 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68  rror, e)); /* th
17470 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
17480 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17490 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
174a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
174b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174c0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
174d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
174e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
174f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17500 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
17510 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
17520 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
17530 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
17540 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17590 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
175a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
175b0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
175c0 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
175d0 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
175e0 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20  ork, the native 
175f0 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
17600 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20   must..    //   
17610 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63 61      be used beca
17620 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73 20  use it provides 
17630 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75  several workarou
17640 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70  nds to .NET Comp
17650 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  act..    //     
17660 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69    Framework limi
17670 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e  tations importan
17680 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65  t for proper ope
17690 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f  ration of the co
176a0 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  re..    //      
176b0 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
176c0 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ite functionalit
176d0 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62  y (e.g. being ab
176e0 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20  le to bind..    
176f0 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65 74  //       paramet
17700 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63  ers and handle c
17710 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20  olumn values of 
17720 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20  types Int64 and 
17730 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f  Double)...    //
17740 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
17750 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
17760 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
17770 2e 49 6e 74 65 72 6f 70 2e 31 30 36 2e 64 6c 6c  .Interop.106.dll
17780 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45  ";..#elif SQLITE
17790 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f  _STANDARD..    /
177a0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
177b0 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
177c0 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
177d0 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61  e library is ena
177e0 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20  bled, use it... 
177f0 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
17800 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
17810 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73   SQLITE_DLL = "s
17820 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20  qlite3";..#elif 
17830 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d  USE_INTEROP_DLL.
17840 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
17850 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
17860 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
17870 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
17880 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65  sembly is enable
17890 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  d,..    //      
178a0 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
178b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
178c0 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
178d0 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
178e0 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a  .Interop.dll";..
178f0 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
17900 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
17910 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
17920 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
17930 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
17940 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
17950 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
17960 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
17970 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
17980 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
17990 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
179a0 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
179b0 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
179c0 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
179d0 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
179e0 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
179f0 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
17a00 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
17a10 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
17a20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
17a30 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
17a40 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
17a50 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
17a60 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
17a70 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
17a80 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
17a90 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
17aa0 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
17ab0 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
17ac0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
17ad0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17ae0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
17af0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17b00 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
17b10 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
17b20 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
17b30 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
17b40 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
17b50 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
17b60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17b70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
17b80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17b90 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17ba0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
17bb0 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
17bc0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
17bd0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
17be0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
17bf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17c00 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
17c10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17c20 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
17c30 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
17c40 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
17c50 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
17c60 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
17c70 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
17c80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17c90 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
17ca0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17cb0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
17cc0 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
17cd0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
17ce0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
17cf0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
17d00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17d10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
17d20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17d30 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
17d40 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
17d50 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
17d60 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
17d70 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
17d80 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
17d90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17da0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
17db0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17dc0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17dd0 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
17de0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
17df0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
17e00 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
17e10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17e20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
17e30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17e40 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17e50 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
17e60 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
17e70 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
17e80 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
17e90 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17ea0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17eb0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17ec0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17ed0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
17ee0 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
17ef0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
17f00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
17f10 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
17f20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17f30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
17f40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17f50 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
17f60 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
17f70 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
17f80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
17f90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
17fa0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
17fb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17fc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
17fd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17fe0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17ff0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
18000 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
18010 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
18020 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
18030 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
18040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18050 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18060 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18070 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
18080 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
18090 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
180a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
180b0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
180c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
180d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
180e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
180f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18100 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
18110 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
18120 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
18130 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
18140 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
18150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18160 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18170 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18180 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
18190 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
181a0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
181b0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
181c0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
181d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
181e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
181f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18200 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18210 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
18220 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
18230 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
18240 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18250 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18260 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18270 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18280 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18290 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
182a0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
182b0 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
182c0 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
182d0 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
182e0 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69  ptrRemain, ref i
182f0 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
18300 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18310 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18320 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18330 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18340 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18350 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
18360 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
18370 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
18380 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
18390 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
183a0 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
183b0 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
183c0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
183d0 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
183e0 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
183f0 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
18400 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66  int autoInc, ref
18410 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20   int dtLen, ref 
18420 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
18430 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18440 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18450 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18460 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
18470 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
18480 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18490 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
184a0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
184b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
184c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
184d0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
184e0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
184f0 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
18500 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
18510 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
18520 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18530 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18540 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18550 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
18560 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
18570 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
18580 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
18590 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
185a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
185b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
185c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
185d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
185e0 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
185f0 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
18600 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
18610 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
18620 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
18630 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
18640 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
18650 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
18660 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
18670 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
18680 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
18690 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
186a0 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
186b0 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
186c0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
186d0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
186e0 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
186f0 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
18700 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
18710 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
18720 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18730 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18740 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18750 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
18760 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
18770 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18780 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18790 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
187a0 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
187b0 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
187c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
187d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
187e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
187f0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
18800 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
18810 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
18820 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
18830 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18840 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18850 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18860 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
18870 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
18880 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
18890 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
188a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
188b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
188c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
188d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
188e0 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
188f0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
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 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18920 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18930 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18940 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
18950 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
18960 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
18970 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
18980 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
18990 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
189a0 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
189b0 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
189c0 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
189d0 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
189e0 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
189f0 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
18a00 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18a10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18a20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18a30 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18a40 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18a50 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
18a60 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
18a70 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18a80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18a90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18aa0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18ab0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18ac0 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
18ad0 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
18ae0 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
18af0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18b00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18b10 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18b20 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
18b30 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
18b40 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
18b50 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
18b60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18b70 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18b80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18b90 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
18ba0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
18bb0 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62  3_open_interop(b
18bc0 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
18bd0 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
18be0 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
18bf0 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
18c00 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
18c10 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
18c20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18c30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18c40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18c50 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18c60 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18c70 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62  open16_interop(b
18c80 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
18c90 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
18ca0 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
18cb0 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
18cc0 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
18cd0 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
18ce0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18cf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18d00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18d10 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18d20 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18d30 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
18d40 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
18d50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18d60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18d70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18d80 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
18d90 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
18da0 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
18db0 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
18dc0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
18dd0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18de0 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
18df0 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
18e00 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
18e10 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
18e20 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
18e30 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
18e40 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
18e50 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
18e60 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
18e70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18e80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18e90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18ea0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18eb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18ec0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18ed0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18ee0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18ef0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18f00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18f10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18f20 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
18f30 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
18f40 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
18f50 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
18f60 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
18f70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18f80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18f90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18fa0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18fb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18fc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18fd0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18fe0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ff0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19000 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19010 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19020 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19030 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
19040 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
19050 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
19060 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19070 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19080 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
190a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
190b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
190c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
190d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
190e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
190f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19100 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19110 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19120 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
19130 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
19140 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
19150 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
19160 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
19170 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
19180 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
19190 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
191a0 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
191b0 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
191c0 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
191d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
191e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
191f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19200 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19210 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19230 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19240 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19250 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19260 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19270 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
19280 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
19290 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
192a0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
192b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
192c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
192d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
192e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
192f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19300 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19310 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19330 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
19360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19370 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
19380 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
19390 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
193a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
193b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
193c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
193d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
193e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
193f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19400 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19410 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19420 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19430 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19440 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
19450 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
19460 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
19470 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19480 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19490 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
194a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
194b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
194c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
194d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
194e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
194f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19500 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19510 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19520 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
19530 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
19540 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
19550 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19560 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19580 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
195a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
195b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
195c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
195d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
195e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
195f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19600 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19610 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
19620 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
19630 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
19640 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
19650 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19660 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19670 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19680 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19690 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
196a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
196b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
196c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
196d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
196e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
196f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19700 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
19710 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
19720 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
19730 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19740 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
19750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
19770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19780 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19790 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
197a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
197b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
197c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
197d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
197e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
197f0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
19800 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
19810 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
19820 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19830 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19840 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19850 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19860 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19870 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19880 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19890 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
198a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
198b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
198c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
198d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
198e0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
198f0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
19900 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
19910 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
19920 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19930 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19950 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19960 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19970 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19980 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19990 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
199a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
199b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
199c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
199d0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
199e0 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
199f0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
19a00 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
19a10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19a20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19a30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19a40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19a50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19a60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19a70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19a90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19aa0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19ab0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19ac0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
19ad0 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
19ae0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19af0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19b00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19b10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19b20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19b30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19b40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19b50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19b60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19b70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19b80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19b90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19ba0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
19bb0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
19bc0 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
19bd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
19be0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19bf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19c00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19c20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19c30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19c40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19c50 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19c60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19c70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19c80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19c90 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
19ca0 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
19cb0 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
19cc0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19cd0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19ce0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19cf0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19d00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19d10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19d20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19d30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19d40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19d50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19d60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19d70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19d80 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
19d90 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
19da0 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
19db0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
19dc0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19dd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19de0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19df0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19e00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19e10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19e20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19e30 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
19e40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19e50 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19e60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19e70 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
19e80 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
19e90 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
19ea0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
19eb0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19ec0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19ed0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19ee0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19ef0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19f00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19f10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19f20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
19f30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19f40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19f50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19f60 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
19f70 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
19f80 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
19f90 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
19fa0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19fb0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19fc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19fd0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19fe0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19ff0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a000 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a010 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a020 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a030 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a040 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1a050 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1a060 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
1a070 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a080 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a090 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a0a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a0b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a0c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a0d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a0e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a0f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a100 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a110 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a120 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a130 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a140 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
1a150 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
1a160 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a170 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a180 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a190 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a1a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a1b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a1c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a1d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a1e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a1f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a200 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a210 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a220 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
1a230 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
1a240 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72  l, int nBytes, r
1a250 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ef IntPtr stmt, 
1a260 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65  ref IntPtr ptrRe
1a270 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
1a280 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
1a290 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a2a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a2b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a2c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a2d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a2e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a2f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a300 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a310 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a320 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a330 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1a340 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1a350 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
1a360 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
1a370 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1a380 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1a390 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1a3a0 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
1a3b0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1a3c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a3d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a3e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a3f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a400 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a410 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a420 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a430 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a440 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a450 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a460 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1a470 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1a480 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
1a490 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
1a4a0 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
1a4b0 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1a4c0 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
1a4d0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
1a4e0 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
1a4f0 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
1a500 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
1a510 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
1a520 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
1a530 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
1a540 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a550 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a560 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a570 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a580 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a590 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a5a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a5b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a5c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a5d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a5e0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a5f0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1a600 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
1a610 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a620 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a630 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a640 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a660 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a670 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a680 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a690 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a6a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a6b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a6c0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a6d0 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
1a6e0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1a6f0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
1a700 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
1a710 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1a720 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
1a730 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
1a740 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
1a750 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
1a760 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
1a770 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
1a780 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
1a790 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
1a7a0 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
1a7b0 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
1a7c0 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
1a7d0 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
1a7e0 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
1a7f0 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1a800 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
1a810 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a820 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1a830 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a840 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1a850 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
1a860 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1a870 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74  ntext, ref int t
1a880 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63  ype, ref int enc
1a890 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1a8a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1a8b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a8c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a8d0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1a8e0 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
1a8f0 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
1a900 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1a910 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
1a920 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
1a930 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
1a940 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1a950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a960 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a970 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a980 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a990 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
1a9a0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1a9b0 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
1a9c0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29   ref long rowid)
1a9d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1a9e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a9f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1aa00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1aa10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1aa20 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
1aa30 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
1aa40 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1aa50 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
1aa60 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
1aa70 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72  [] ColumnName, r
1aa80 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ef int sortOrder
1aa90 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f  , ref int onErro
1aaa0 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f  r, ref IntPtr Co
1aab0 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74  llation, ref int
1aac0 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
1aad0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1aae0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1aaf0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ab00 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1ab10 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69  3_table_cursor_i
1ab20 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1ab30 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20  mt, int db, int 
1ab40 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d  tableRootPage);.
1ab50 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
1ab60 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1ab70 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1ab80 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64  ....    // Stand
1ab90 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c  ard API calls gl
1aba0 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73  obal across vers
1abb0 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65  ions.  There are
1abc0 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73   a few instances
1abd0 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c   of interop call
1abe0 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65  s..    // scatte
1abf0 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74  red in here, but
1ac00 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61   they are only a
1ac10 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46  ctive when PLATF
1ac20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ac30 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64  WORK is declared
1ac40 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
1ac50 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61  tandard sqlite a
1ac60 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  pi calls....#if 
1ac70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ac80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ac90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1aca0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1acb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1acc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1acd0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ace0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1acf0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ad00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ad10 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1ad20 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
1ad30 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
1ad40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ad50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ad60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ad70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ad80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ad90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ada0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1adb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1adc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1add0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ade0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1adf0 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
1ae00 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
1ae10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ae20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ae30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ae40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ae50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ae60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ae70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ae80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ae90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1aea0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1aeb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1aec0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1aed0 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
1aee0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1aef0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1af00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1af10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1af20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1af30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1af40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1af50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1af60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1af70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1af80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1af90 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1afa0 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
1afb0 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65  (IntPtr zOptName
1afc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1afd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1afe0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1aff0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b000 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b010 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b020 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b030 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b050 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b060 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b070 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1b080 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
1b090 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
1b0a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b0b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b0c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b0d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b0e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b0f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b100 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b110 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b120 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b130 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b140 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b150 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1b160 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  ode sqlite3_enab
1b170 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
1b180 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e  ..        int en
1b190 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
1b1a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b1b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b1c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b1d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b1e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b1f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b200 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b210 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b220 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b230 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b240 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1b250 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1b260 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
1b270 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
1b280 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e     IntPtr db, in
1b290 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
1b2a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b2b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b2c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b2d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b2e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b2f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b300 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b310 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b320 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b330 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b340 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1b350 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1b360 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
1b370 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  nsion(..        
1b380 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1b390 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65  ] fileName, byte
1b3a0 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66  [] procName, ref
1b3b0 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b   IntPtr pError);
1b3c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b3d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b3e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b3f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b410 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b420 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b430 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b450 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b460 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b470 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1b480 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65  Code sqlite3_ove
1b490 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49  rload_function(I
1b4a0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1b4b0 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67   zName, int nArg
1b4c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f  s);....#if WINDO
1b4d0 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  WS..#if !PLATFOR
1b4e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b4f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b500 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b510 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b520 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b530 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1b540 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1b550 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1b560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b570 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1b580 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1b590 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1b5a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
1b5b0 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
1b5c0 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
1b5d0 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f  ctory" SQLite co
1b5e0 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
1b5f0 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
1b600 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
1b610 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d  ted on Windows..
1b620 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
1b630 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b640 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1b650 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
1b660 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28  2_set_directory(
1b670 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e  uint type, strin
1b680 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  g value);....#if
1b690 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a   !DEBUG // NOTE:
1b6a0 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33   Should be "WIN3
1b6b0 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42  2HEAP && !MEMDEB
1b6c0 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  UG"..#if !PLATFO
1b6d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b6e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b6f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b710 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b720 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b730 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b750 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
1b760 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1b770 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
1b780 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53  32_reset_heap" S
1b790 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1b7a0 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
1b7b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1b7c0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
1b7d0 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
1b7e0 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
1b7f0 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
1b800 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
1b810 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
1b820 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
1b830 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
1b840 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
1b850 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
1b860 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
1b870 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
1b880 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
1b890 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
1b8a0 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
1b8b0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
1b8c0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
1b8d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b8e0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1b8f0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1b900 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
1b910 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
1b920 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b930 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b940 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b950 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b960 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b970 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b980 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b990 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b9a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b9b0 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1b9c0 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77  : The "sqlite3_w
1b9d0 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61  in32_compact_hea
1b9e0 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
1b9f0 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
1ba00 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
1ba10 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
1ba20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
1ba30 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
1ba40 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
1ba50 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
1ba60 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
1ba70 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
1ba80 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
1ba90 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
1baa0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1bab0 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
1bac0 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
1bad0 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
1bae0 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
1baf0 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
1bb00 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
1bb10 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
1bb20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bb30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1bb40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1bb50 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63  te3_win32_compac
1bb60 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20  t_heap(ref uint 
1bb70 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69  largest);..#endi
1bb80 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  f..#endif....#if
1bb90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1bba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1bbb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bbc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1bbd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1bbe0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1bbf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1bc00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bc10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1bc20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1bc30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1bc40 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c  tPtr sqlite3_mal
1bc50 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23  loc(int n);....#
1bc60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1bc70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1bc80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bc90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1bca0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1bcb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1bcc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1bcd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bce0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1bcf0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1bd00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bd10 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72  IntPtr sqlite3_r
1bd20 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c  ealloc(IntPtr p,
1bd30 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20   int n);....#if 
1bd40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1bd50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bd60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bd70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1bd80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1bd90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1bda0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1bdb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bdc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1bdd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bde0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1bdf0 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49  d sqlite3_free(I
1be00 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1be10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1be20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1be30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1be40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1be50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1be60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1be70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1be80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1be90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1bea0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1beb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1bec0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1bed0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79  lite3_open_v2(by
1bee0 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
1bef0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  e, ref IntPtr db
1bf00 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
1bf10 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79 74  sEnum flags, byt
1bf20 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d  e[] vfsName);...
1bf30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1bf40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1bf50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bf60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1bf70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1bf80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1bf90 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
1bfa0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1bfb0 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
1bfc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bfd0 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
1bfe0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
1bff0 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
1c000 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c010 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1c020 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1c030 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69  open16(string fi
1c040 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  leName, ref IntP
1c050 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1c060 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c070 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c080 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c090 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c0a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c0b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c0c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c0d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c0e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c0f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c100 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1c110 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
1c120 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  pt(IntPtr db);..
1c130 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c140 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c150 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c160 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c170 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c180 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c190 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1c1a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c1b0 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
1c1c0 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
1c1d0 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29  rowid(IntPtr db)
1c1e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1c1f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c200 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c210 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c220 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c230 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c240 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c250 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c270 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c280 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c290 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1c2a0 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
1c2b0 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  s(IntPtr db);...
1c2c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c2d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c2e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c2f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c300 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c310 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c320 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
1c330 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c340 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
1c350 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29  e3_memory_used()
1c360 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1c370 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c380 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c390 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c3a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c3b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c3c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c3d0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1c3e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c3f0 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d  n long sqlite3_m
1c400 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
1c410 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d  int resetFlag);.
1c420 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1c430 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c440 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c450 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c460 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c470 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c480 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c490 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c4a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c4b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c4c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c4d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c4e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c4f0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d  te3_shutdown();.
1c500 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c510 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c520 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c530 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c540 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c550 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c560 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c570 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c580 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c590 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c5a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c5b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c5c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79  ode sqlite3_busy
1c5d0 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20  _timeout(IntPtr 
1c5e0 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a  db, int ms);....
1c5f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c600 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c610 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c620 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c630 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c640 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c650 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c660 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c670 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c680 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c690 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c6a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1c6b0 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62   sqlite3_clear_b
1c6c0 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20 73  indings(IntPtr s
1c6d0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1c6e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c6f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c700 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c710 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c720 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c730 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c740 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c750 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c760 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c770 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c780 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c790 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c7a0 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50  3_bind_blob(IntP
1c7b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c7c0 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65  ex, Byte[] value
1c7d0 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
1c7e0 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b  Ptr nTransient);
1c7f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c800 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c810 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c820 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c840 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c850 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
1c860 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c870 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1c880 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1c890 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74  _bind_double(Int
1c8a0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c8b0 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75  dex, double valu
1c8c0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
1c8d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c8e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c8f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c900 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c910 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c930 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c950 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c960 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c970 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c990 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1c9a0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1c9b0 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
1c9c0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ue);....    //..
1c9d0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
1c9e0 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
1c9f0 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
1ca00 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c  d_int"; however,
1ca10 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
1ca20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
1ca30 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
1ca40 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
1ca50 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65   (32-bit) intege
1ca60 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
1ca70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ca80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ca90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1caa0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1cab0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
1cac0 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43  d_int", CallingC
1cad0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1cae0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1caf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1cb00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cb10 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1cb20 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
1cb30 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64  ind_int")]..#end
1cb40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1cb50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1cb60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1cb70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
1cb80 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cb90 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61  t index, uint va
1cba0 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
1cbb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1cbc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1cbd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cbe0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1cbf0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cc00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cc10 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1cc20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cc30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1cc40 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
1cc50 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cc60 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
1cc70 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
1cc80 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1cc90 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
1cca0 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
1ccb0 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
1ccc0 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68  "; however, it h
1ccd0 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  as the..    //  
1cce0 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70       correct typ
1ccf0 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20  e signature for 
1cd00 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  an unsigned long
1cd10 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65   (64-bit) intege
1cd20 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
1cd30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cd40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cd50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cd60 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1cd70 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
1cd80 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e  d_int64", Callin
1cd90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1cda0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1cdb0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1cdc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cdd0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1cde0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
1cdf0 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  _uint64(IntPtr s
1ce00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1ce10 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23  ulong value);..#
1ce20 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1ce30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ce40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ce50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ce60 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ce70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ce80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ce90 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1cea0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ceb0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1cec0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ced0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1cee0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1cef0 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50  3_bind_null(IntP
1cf00 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1cf10 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1cf20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cf30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1cf40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cf50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1cf60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1cf70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1cf80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1cf90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cfa0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1cfb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cfc0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1cfd0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1cfe0 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74  _bind_text(IntPt
1cff0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d000 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, byte[] value,
1d010 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
1d020 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
1d030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d0a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d0b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d0c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d0d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d0e0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
1d0f0 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
1d100 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
1d110 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d120 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d130 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d140 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d150 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d160 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d170 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1d180 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1d190 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d1a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1d1b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d1c0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1d1d0 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
1d1e0 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74  _index(IntPtr st
1d1f0 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  mt, byte[] strNa
1d200 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
1d210 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d220 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d230 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d240 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d250 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d260 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d270 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d290 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d2a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d2b0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1d2c0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
1d2d0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
1d2e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d2f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d300 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d310 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d320 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d330 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d340 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d350 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d360 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d370 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d380 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d390 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d3a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ode sqlite3_step
1d3b0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
1d3c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d3d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d3e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d3f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d400 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d410 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d420 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d430 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d440 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d450 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d460 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d470 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73  rn int sqlite3_s
1d480 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  tmt_readonly(Int
1d490 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e  Ptr stmt); /* 3.
1d4a0 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21  7.4+ */....#if !
1d4b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d4c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d4d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d4e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d4f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d500 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d510 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1d520 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d530 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63  double sqlite3_c
1d540 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74  olumn_double(Int
1d550 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d560 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
1d570 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d580 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d590 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d5a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d5b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d5c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d5d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d5e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d5f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d600 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d610 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d620 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1d630 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20  lumn_int(IntPtr 
1d640 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1d650 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d660 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d670 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d680 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d690 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d6a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d6b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
1d6c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d6d0 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
1d6e0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
1d6f0 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
1d700 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
1d710 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1d720 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d730 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d740 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d750 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d760 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d770 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d780 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d790 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d7a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d7b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d7c0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1d7d0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
1d7e0 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  lob(IntPtr stmt,
1d7f0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1d800 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d810 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d830 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d860 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d870 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d880 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d890 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d8a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d8b0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
1d8c0 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72  umn_bytes(IntPtr
1d8d0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1d8e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1d8f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d900 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d910 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d930 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d940 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d950 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d960 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d970 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d980 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d990 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1d9a0 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31  e3_column_bytes1
1d9b0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1d9c0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1d9d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d9e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d9f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1da00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1da10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1da20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1da30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1da40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1da50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1da60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1da70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54   static extern T
1da80 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69  ypeAffinity sqli
1da90 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28  te3_column_type(
1daa0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1dab0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1dac0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1dad0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1dae0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1daf0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1db00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1db10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1db20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1db30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1db40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1db50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1db60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1db70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1db80 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
1db90 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ation(IntPtr db,
1dba0 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
1dbb0 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
1dbc0 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
1dbd0 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29  eCollation func)
1dbe0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1dbf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dc00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1dc10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dc20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1dc30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1dc40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1dc50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1dc60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dc70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dc80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dc90 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1dca0 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
1dcb0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1dcc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1dcd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1dce0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dcf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1dd00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dd10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1dd20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1dd30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1dd40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1dd50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1dd60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1dd70 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1dd80 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62  lite3_value_blob
1dd90 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1dda0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ddb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ddc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ddd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1dde0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ddf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1de00 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1de10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1de20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1de30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1de40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1de50 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
1de60 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 70  e_bytes(IntPtr p
1de70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1de80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1de90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dea0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1deb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dec0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ded0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1dee0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [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 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1df10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1df20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1df30 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36  e3_value_bytes16
1df40 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1df50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1df60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1df70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1df80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1df90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1dfa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1dfb0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1dfc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1dfd0 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
1dfe0 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
1dff0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64  IntPtr p);..#end
1e000 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1e010 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e020 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e050 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e060 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e070 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e090 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e0a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e0b0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1e0c0 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74  e3_value_int(Int
1e0d0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
1e0e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e0f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e100 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e110 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e120 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e130 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e140 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1e150 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e160 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c  long sqlite3_val
1e170 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  ue_int64(IntPtr 
1e180 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
1e190 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e1a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e1b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e1c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e1d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e1e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e1f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e200 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e210 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e220 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e230 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e240 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
1e250 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28  ite3_value_type(
1e260 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
1e270 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e280 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e2a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e2b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e2c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e2d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e2e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e2f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e300 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e310 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1e320 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1e330 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63  lt_blob(IntPtr c
1e340 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
1e350 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
1e360 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
1e370 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
1e380 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e390 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e3a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e3b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e3c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e3d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e3e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e3f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1e400 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1e410 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63  _double(IntPtr c
1e420 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76  ontext, double v
1e430 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
1e440 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e450 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e460 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e470 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e480 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e490 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e4a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e4b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e4c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e4d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e4e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e4f0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1e500 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74  result_error(Int
1e510 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
1e520 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20  e[] strErr, int 
1e530 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1e540 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e550 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e560 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e570 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e580 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e590 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e5a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e5b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e5c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e5d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e5e0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1e5f0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1e600 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72  rror_code(IntPtr
1e610 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65   context, SQLite
1e620 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1e630 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e640 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e650 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e660 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e670 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e680 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e6a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e6b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e6c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e6d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e6e0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1e6f0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e700 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f  toobig(IntPtr co
1e710 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
1e720 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e730 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e740 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e750 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e760 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e770 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e780 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e790 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e7a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e7b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e7c0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1e7d0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1e7e0 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50  error_nomem(IntP
1e7f0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
1e800 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e810 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e830 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e860 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e870 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e880 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e890 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e8a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e8b0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1e8c0 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74  sult_value(IntPt
1e8d0 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
1e8e0 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  r value);....#if
1e8f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e900 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e920 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e930 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e950 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e960 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e970 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e980 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e990 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1e9a0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1e9b0 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74  t_zeroblob(IntPt
1e9c0 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
1e9d0 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
1e9e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e9f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ea00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ea10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ea20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ea30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ea40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ea50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ea60 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ea70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ea80 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1ea90 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
1eaa0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1eab0 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
1eac0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ead0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1eae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1eaf0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1eb00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1eb10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1eb20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
1eb30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1eb40 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1eb50 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28  e3_result_int64(
1eb60 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1eb70 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
1eb80 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1eb90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1eba0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ebb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ebc0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1ebd0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1ebe0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ebf0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1ec00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ec10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ec20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ec30 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1ec40 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c  lite3_result_nul
1ec50 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  l(IntPtr context
1ec60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ec70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ec80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ec90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1eca0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ecb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ecc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ecd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ece0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ecf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ed00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ed10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1ed20 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28  te3_result_text(
1ed30 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1ed40 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
1ed50 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nLen, IntPtr p
1ed60 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
1ed70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ed80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ed90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1eda0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1edb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1edc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1edd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ede0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1edf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ee00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1ee10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ee20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61  IntPtr sqlite3_a
1ee30 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74  ggregate_context
1ee40 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1ee50 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d   int nBytes);...
1ee60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ee70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ee80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ee90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1eea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1eeb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1eec0 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
1eed0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1eee0 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
1eef0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ef00 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
1ef10 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
1ef20 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
1ef30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ef40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1ef50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1ef60 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50  bind_text16(IntP
1ef70 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1ef80 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ex, string value
1ef90 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
1efa0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1efb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1efc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1efd0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1efe0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1eff0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f000 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f010 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
1f020 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1f030 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
1f040 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f050 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
1f060 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1f070 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
1f080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f090 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f0a0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1f0b0 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ror16(IntPtr con
1f0c0 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
1f0d0 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  Name, int nLen);
1f0e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f0f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f100 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f130 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f140 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1f150 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1f160 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1f170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f180 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1f190 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1f1a0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1f1b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f1c0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1f1d0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
1f1e0 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ext16(IntPtr con
1f1f0 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
1f200 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  Name, int nLen, 
1f210 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
1f220 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  d);....#if INTER
1f230 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45  OP_CODEC || INTE
1f240 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d  ROP_INCLUDE_SEE.
1f250 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f260 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f280 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f2a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f2b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f2c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f2d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f2e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f2f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f300 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f310 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e  e sqlite3_key(In
1f320 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1f330 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
1f340 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f350 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f360 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f370 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f380 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f390 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f3a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f3b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f3c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f3d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f3e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f3f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1f400 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
1f410 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
1f420 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
1f430 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  eylen);..#endif.
1f440 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 49  ...#if INTEROP_I
1f450 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a 23  NCLUDE_ZIPVFS..#
1f460 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f470 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f480 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f490 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f4a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f4b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f4c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f4d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f4e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f4f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f500 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f510 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f  void zipvfsInit_
1f520 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  v2();....#if !PL
1f530 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f540 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f560 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f570 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f580 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f590 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f5a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f5b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f5c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f5d0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
1f5e0 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e 74  ipvfsInit_v3(int
1f5f0 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e 64   regDflt);..#end
1f600 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1f610 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f620 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f630 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f640 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f650 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f660 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f670 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f680 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f690 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f6a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f6b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1f6c0 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e  te3_progress_han
1f6d0 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20  dler(IntPtr db, 
1f6e0 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65 50  int ops, SQLiteP
1f6f0 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20  rogressCallback 
1f700 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
1f710 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
1f720 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f730 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f740 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f750 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f760 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f770 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f780 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f790 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f7a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f7b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f7c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1f7d0 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74   sqlite3_set_aut
1f7e0 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20 64  horizer(IntPtr d
1f7f0 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69  b, SQLiteAuthori
1f800 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  zerCallback func
1f810 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
1f820 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f830 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f840 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f870 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f880 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f890 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f8a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f8b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f8c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f8d0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1f8e0 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
1f8f0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
1f900 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b  teUpdateCallback
1f910 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
1f920 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
1f930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f950 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f960 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f970 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f980 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f990 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f9a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f9b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f9c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f9d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1f9e0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74  r sqlite3_commit
1f9f0 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
1fa00 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c   SQLiteCommitCal
1fa10 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1fa20 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1fa30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fa40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fa50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fa60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1fa70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fa80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fa90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1faa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fab0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1fac0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fad0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fae0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74  IntPtr sqlite3_t
1faf0 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20  race(IntPtr db, 
1fb00 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62  SQLiteTraceCallb
1fb10 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
1fb20 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20   pvUser);....   
1fb30 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
1fb40 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73  3_config() takes
1fb50 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
1fb60 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
1fb70 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
1fb80 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
1fb90 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
1fba0 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20  ible calls that 
1fbb0 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d  we want to use..
1fbc0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1fbd0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fbe0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fbf0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1fc00 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1fc10 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1fc20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fc30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fc40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fc50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fc60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1fc70 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1fc80 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1fc90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fca0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fcb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1fcc0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e  sqlite3_config_n
1fcd0 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  one(SQLiteConfig
1fce0 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a  OpsEnum op);....
1fcf0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fd00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fd10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fd20 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
1fd30 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
1fd40 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
1fd50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fd60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fd70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1fd80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fd90 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
1fda0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
1fdb0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
1fdc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1fdd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1fde0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1fdf0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e  qlite3_config_in
1fe00 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  t(SQLiteConfigOp
1fe10 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61  sEnum op, int va
1fe20 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
1fe30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fe40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1fe50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fe60 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1fe70 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
1fe80 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1fe90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = 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 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1fec0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fed0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1fee0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
1fef0 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
1ff00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ff10 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1ff20 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1ff30 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74  config_log(SQLit
1ff40 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
1ff50 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c  p, SQLiteLogCall
1ff60 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1ff70 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1ff80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ff90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ffa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ffb0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1ffc0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
1ffd0 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  b_config", Calli
1ffe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20000 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20010 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20020 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
20030 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
20040 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  3_db_config")]..
20050 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20060 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20070 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
20080 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  de sqlite3_db_co
20090 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74 28  nfig_int_refint(
200a0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
200b0 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d  eConfigDbOpsEnum
200c0 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c 20   op, int value, 
200d0 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29 3b  ref int result);
200e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
200f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20100 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20130 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20140 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20150 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20160 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20170 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20180 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20190 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
201a0 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f  te3_rollback_hoo
201b0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
201c0 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62  iteRollbackCallb
201d0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
201e0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
201f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20200 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20210 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20220 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20230 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20240 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20250 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20270 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20280 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20290 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
202a0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
202b0 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74  handle(IntPtr st
202c0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
202d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
202e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
202f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20300 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20310 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20320 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20330 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
20340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20350 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
20360 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20370 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
20380 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
20390 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  _db_release_memo
203a0 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ry(IntPtr db);..
203b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
203c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
203d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
203e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
203f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20410 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20420 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20430 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20440 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20450 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20460 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20470 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e  3_db_filename(In
20480 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
20490 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
204a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
204b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
204c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
204d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
204e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
204f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20500 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20510 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20520 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20530 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20540 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
20550 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61 64   sqlite3_db_read
20560 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20  only(IntPtr db, 
20570 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d  IntPtr dbName);.
20580 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20590 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
205a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
205b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
205c0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
205d0 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22  te3_db_filename"
205e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
205f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20600 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20610 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20620 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20630 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
20640 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65  "sqlite3_db_file
20650 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  name")]..#endif.
20660 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20670 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
20680 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  tr sqlite3_db_fi
20690 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e 74  lename_bytes(Int
206a0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
206b0 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
206c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
206d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
206e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
206f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20700 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20710 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20720 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20730 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20740 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20750 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20760 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
20770 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f  tr sqlite3_next_
20780 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c 20  stmt(IntPtr db, 
20790 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
207a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
207b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
207c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
207d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
207e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
207f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20800 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20810 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20820 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20830 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20840 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20850 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20860 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49  e sqlite3_exec(I
20870 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
20880 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20   strSql, IntPtr 
20890 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50  pvCallback, IntP
208a0 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66 20  tr pvParam, ref 
208b0 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d  IntPtr errMsg);.
208c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
208d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
208e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
208f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20900 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20910 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20920 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20930 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20940 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20950 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20960 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20970 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
20980 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69  release_memory(i
20990 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
209a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
209b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
209c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
209d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
209e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
209f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20a00 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20a10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20a20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20a30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20a40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20a50 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  int sqlite3_get_
20a60 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74  autocommit(IntPt
20a70 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
20a80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20a90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20aa0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20ab0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20ac0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20ad0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20ae0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20af0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20b00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20b10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20b20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20b30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20b40 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
20b50 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20  lt_codes(IntPtr 
20b60 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d  db, int onoff);.
20b70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20b80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20b90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20ba0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20bb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20bc0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20bd0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20be0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20bf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20c00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20c10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20c20 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20c30 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63  ode sqlite3_errc
20c40 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
20c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20d00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20d10 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  ode sqlite3_exte
20d20 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74  nded_errcode(Int
20d30 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
20d40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20d50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20d60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20d70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20d80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20d90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20da0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20db0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20dc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20dd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20de0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20df0 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 73  Ptr sqlite3_errs
20e00 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  tr(SQLiteErrorCo
20e10 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31  de rc); /* 3.7.1
20e20 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20  5+ */....    // 
20e30 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f  Since sqlite3_lo
20e40 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69  g() takes a vari
20e50 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69  able argument li
20e60 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f  st, we have to o
20e70 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74  verload declarat
20e80 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72  ions..    // for
20e90 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61   all possible ca
20ea0 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77  lls.  For now, w
20eb0 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73  e are only expos
20ec0 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72  ing a single str
20ed0 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  ing, and..    //
20ee0 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63   depend on the c
20ef0 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20  aller to format 
20f00 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66  the string...#if
20f10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20f20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20f30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20f40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20f50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20f60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20f70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20f80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20f90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20fa0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20fb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
20fc0 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53  id sqlite3_log(S
20fd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69  QLiteErrorCode i
20fe0 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20  ErrCode, byte[] 
20ff0 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66  zFormat);....#if
21000 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21010 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21020 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21030 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21040 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21050 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21060 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21070 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21080 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21090 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
210a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
210b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
210c0 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
210d0 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ol(IntPtr db, by
210e0 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e  te[] zDbName, in
210f0 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72  t op, IntPtr pAr
21100 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
21110 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21120 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21130 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21140 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21150 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21160 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21170 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21180 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21190 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
211a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
211b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
211c0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e  qlite3_backup_in
211d0 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44 62  it(IntPtr destDb
211e0 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61  , byte[] zDestNa
211f0 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63  me, IntPtr sourc
21200 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75  eDb, byte[] zSou
21210 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  rceName);....#if
21220 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21230 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21240 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21250 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21260 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21270 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21280 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
212a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
212b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
212c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
212d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
212e0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65  lite3_backup_ste
212f0 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c  p(IntPtr backup,
21300 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a   int nPage);....
21310 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21320 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21330 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21340 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21350 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21360 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21370 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21380 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21390 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
213a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
213b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
213c0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63   int sqlite3_bac
213d0 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e  kup_remaining(In
213e0 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
213f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21400 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21410 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21420 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21430 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21440 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21450 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21460 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21470 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21480 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21490 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
214a0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
214b0 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49  ckup_pagecount(I
214c0 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
214d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
214e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
214f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21500 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21520 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21530 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21540 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21550 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21560 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21570 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21580 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21590 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
215a0 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c 6f  close(IntPtr blo
215b0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
215c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
215d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
215e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
215f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21640 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21650 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21660 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
21670 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28 49  te3_blob_bytes(I
21680 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a  ntPtr blob);....
21690 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
216a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
216b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
216c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
216d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
216e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
216f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21700 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21710 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21720 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21730 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21740 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21750 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70   sqlite3_blob_op
21760 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  en(IntPtr db, by
21770 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74  te[] dbName, byt
21780 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74  e[] tblName, byt
21790 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e  e[] colName, lon
217a0 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c 61  g rowId, int fla
217b0 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  gs, ref IntPtr p
217c0 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20  trBlob);....#if 
217d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
217e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
217f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21800 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21810 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21830 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21850 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21870 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
21880 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
21890 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28 49  ite3_blob_read(I
218a0 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72  ntPtr blob, [Mar
218b0 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64  shalAs(Unmanaged
218c0 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62  Type.LPArray)] b
218d0 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e  yte[] buffer, in
218e0 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66  t count, int off
218f0 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  set);....#if !PL
21900 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21910 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21930 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21940 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21950 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21960 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21970 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21980 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21990 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
219a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
219b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
219c0 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49 6e  3_blob_reopen(In
219d0 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67 20  tPtr blob, long 
219e0 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  rowId);....#if !
219f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21a00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21a10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21a20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21a30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21a40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21a50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21a60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21a70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21a80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21a90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
21aa0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
21ab0 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28 49  te3_blob_write(I
21ac0 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72  ntPtr blob, [Mar
21ad0 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64  shalAs(Unmanaged
21ae0 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62  Type.LPArray)] b
21af0 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e  yte[] buffer, in
21b00 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66  t count, int off
21b10 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  set);....#if !PL
21b20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21b30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21b40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21b50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21b60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21b70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21b80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21b90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21ba0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21bb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21bc0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21bd0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21be0 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
21bf0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
21c00 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
21c10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21c20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21c30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21c40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21c50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21c60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21c70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21c80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21c90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21ca0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21cb0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
21cc0 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
21cd0 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
21ce0 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
21cf0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
21d00 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
21d10 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
21d20 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
21d30 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
21d40 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
21d50 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
21d60 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
21d70 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
21d80 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
21d90 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
21da0 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
21db0 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
21dc0 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23  api calls..    #
21dd0 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c 20 74  region virtual t
21de0 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52 4f  able..#if INTERO
21df0 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
21e00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21e10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21e20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21e30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21e40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21e50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21e60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21e70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21e80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21e90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21ea0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21eb0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
21ec0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
21ed0 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  le_module(IntPtr
21ee0 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
21ef0 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f  , ref sqlite3_mo
21f00 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74  dule module, Int
21f10 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
21f20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
21f30 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69  xDestroy);....#i
21f40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21f50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21f70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21f80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21fa0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
21fb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21fc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21fd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21fe0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
21ff0 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70  oid sqlite3_disp
22000 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ose_module(IntPt
22010 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  r pModule);..#en
22020 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
22030 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
22040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
22090 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65 78  egion session ex
220a0 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e 54  tension..#if INT
220b0 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58 54  EROP_SESSION_EXT
220c0 45 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50 4c 41  ENSION..#if !PLA
220d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
220e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
220f0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
22100 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
22110 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22120 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22130 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 69  ernal delegate i
22140 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  nt xSessionFilte
22150 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  r(IntPtr context
22160 2c 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d  , IntPtr pTblNam
22170 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
22180 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22190 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
221a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
221b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
221c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
221d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
221e0 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51  rnal delegate SQ
221f0 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e  LiteChangeSetCon
22200 66 6c 69 63 74 52 65 73 75 6c 74 20 78 53 65 73  flictResult xSes
22210 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49 6e 74  sionConflict(Int
22220 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
22230 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
22240 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c 20 49  lictType type, I
22250 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b  ntPtr iterator);
22260 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22270 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22280 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
22290 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
222a0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
222b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
222c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
222d0 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  l delegate SQLit
222e0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73  eErrorCode xSess
222f0 69 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74 72 20  ionInput(IntPtr 
22300 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
22310 70 44 61 74 61 2c 20 72 65 66 20 69 6e 74 20 6e  pData, ref int n
22320 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Data);....#if !P
22330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
22350 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
22360 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
22370 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22380 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22390 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
223a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
223b0 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 28   xSessionOutput(
223c0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
223d0 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 69 6e  IntPtr pData, in
223e0 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20  t nData);....   
223f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
22440 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22450 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22460 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22470 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22480 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22490 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
224a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
224b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
224c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
224d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
224e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
224f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22500 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
22510 63 72 65 61 74 65 28 49 6e 74 50 74 72 20 64 62  create(IntPtr db
22520 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
22530 20 72 65 66 20 49 6e 74 50 74 72 20 73 65 73 73   ref IntPtr sess
22540 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
22550 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22560 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22570 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22580 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22590 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
225a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
225b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
225c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
225d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
225e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
225f0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
22600 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 65  qlite3session_de
22610 6c 65 74 65 28 49 6e 74 50 74 72 20 73 65 73 73  lete(IntPtr sess
22620 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
22630 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22640 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22650 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22660 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22670 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22680 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22690 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
226a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
226b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
226c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
226d0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
226e0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61  lite3session_ena
226f0 62 6c 65 28 49 6e 74 50 74 72 20 73 65 73 73 69  ble(IntPtr sessi
22700 6f 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b  on, int enable);
22710 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22720 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22730 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22740 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22760 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22770 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22780 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22790 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
227a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
227b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
227c0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
227d0 73 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74  session_indirect
227e0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
227f0 20 69 6e 74 20 69 6e 64 69 72 65 63 74 29 3b 0d   int indirect);.
22800 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22810 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22820 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22830 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22840 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22850 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22860 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22870 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22890 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
228a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
228b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
228c0 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
228d0 6f 6e 5f 61 74 74 61 63 68 28 49 6e 74 50 74 72  on_attach(IntPtr
228e0 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d   session, byte[]
228f0 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   tblName);....#i
22900 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22910 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22920 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22930 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22940 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22950 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22960 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
22970 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22980 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
22990 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
229a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
229b0 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73 73 69  oid sqlite3sessi
229c0 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72 28  on_table_filter(
229d0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
229e0 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78  xSessionFilter x
229f0 46 69 6c 74 65 72 2c 20 49 6e 74 50 74 72 20 63  Filter, IntPtr c
22a00 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
22a10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22a20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22a30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22a40 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22a50 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22a60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22a70 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22a80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22a90 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22aa0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22ab0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
22ac0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
22ad0 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e  ite3session_chan
22ae0 67 65 73 65 74 28 49 6e 74 50 74 72 20 73 65 73  geset(IntPtr ses
22af0 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 43  sion, ref int nC
22b00 68 61 6e 67 65 53 65 74 2c 20 72 65 66 20 49 6e  hangeSet, ref In
22b10 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29  tPtr pChangeSet)
22b20 3b 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ;...#if !PLATFOR
22b30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22b40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22b50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22b60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22b70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22b80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22b90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22ba0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22bb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22bc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22bd0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
22be0 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
22bf0 69 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74 72 20  ion_diff(IntPtr 
22c00 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20  session, byte[] 
22c10 66 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79 74 65  fromDbName, byte
22c20 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65 66 20  [] tblName, ref 
22c30 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d  IntPtr errMsg);.
22c40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22c50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22c60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22c70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22c80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22c90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22ca0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22cb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22cc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22cd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22ce0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22cf0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
22d00 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
22d10 6f 6e 5f 70 61 74 63 68 73 65 74 28 49 6e 74 50  on_patchset(IntP
22d20 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20  tr session, ref 
22d30 69 6e 74 20 6e 50 61 74 63 68 53 65 74 2c 20 72  int nPatchSet, r
22d40 65 66 20 49 6e 74 50 74 72 20 70 50 61 74 63 68  ef IntPtr pPatch
22d50 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Set);....#if !PL
22d60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22d70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22d80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22d90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22da0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22db0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22dc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22dd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22de0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22df0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22e00 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
22e10 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 73 65  lite3session_ise
22e20 6d 70 74 79 28 49 6e 74 50 74 72 20 73 65 73 73  mpty(IntPtr sess
22e30 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
22e40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22e50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22e60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22e70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22e80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22e90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22ea0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22eb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22ec0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22ed0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22ee0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22ef0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
22f00 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
22f10 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65 72  (ref IntPtr iter
22f20 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e 67  ator, int nChang
22f30 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68  eSet, IntPtr pCh
22f40 61 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23 69 66  angeSet);....#if
22f50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22f60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22f70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22f80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22fb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22fc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22fd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22fe0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22ff0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
23000 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
23010 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e  lite3changeset_n
23020 65 78 74 28 49 6e 74 50 74 72 20 69 74 65 72 61  ext(IntPtr itera
23030 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tor);....#if !PL
23040 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23050 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23060 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23070 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23080 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23090 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
230a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
230b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
230c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
230d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
230e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
230f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
23100 33 63 68 61 6e 67 65 73 65 74 5f 6f 70 28 49 6e  3changeset_op(In
23110 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72  tPtr iterator, r
23120 65 66 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61  ef IntPtr pTblNa
23130 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c  me, ref int nCol
23140 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69 74 65  umns, ref SQLite
23150 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
23160 43 6f 64 65 20 6f 70 2c 20 72 65 66 20 69 6e 74  Code op, ref int
23170 20 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a   bIndirect);....
23180 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23190 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
231a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
231b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
231c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
231d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
231e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
231f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23200 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23210 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23220 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23230 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
23240 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
23250 74 5f 70 6b 28 49 6e 74 50 74 72 20 69 74 65 72  t_pk(IntPtr iter
23260 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  ator, ref IntPtr
23270 20 70 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 72   pPrimaryKeys, r
23280 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29  ef int nColumns)
23290 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
232a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
232b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
232c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
232d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
232e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
232f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23300 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23310 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23320 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23330 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23340 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23350 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
23360 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50 74  ngeset_old(IntPt
23370 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20  r iterator, int 
23380 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66  columnIndex, ref
23390 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b   IntPtr pValue);
233a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
233b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
233c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
233d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
233e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
233f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23400 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23410 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23420 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23430 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23440 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23450 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23460 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
23470 67 65 73 65 74 5f 6e 65 77 28 49 6e 74 50 74 72  geset_new(IntPtr
23480 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63   iterator, int c
23490 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20  olumnIndex, ref 
234a0 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d  IntPtr pValue);.
234b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
234c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
234d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
234e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
234f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23500 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23510 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23520 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23530 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23540 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23550 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23560 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23570 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
23580 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49 6e  eset_conflict(In
23590 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69  tPtr iterator, i
235a0 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20  nt columnIndex, 
235b0 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75  ref IntPtr pValu
235c0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
235d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
235e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
235f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23600 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23610 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23620 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23630 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23640 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23650 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23660 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23670 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
23680 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
23690 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66  hangeset_fk_conf
236a0 6c 69 63 74 73 28 49 6e 74 50 74 72 20 69 74 65  licts(IntPtr ite
236b0 72 61 74 6f 72 2c 20 72 65 66 20 69 6e 74 20 63  rator, ref int c
236c0 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23 69  onflicts);....#i
236d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
236e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
236f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23700 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23710 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23720 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23730 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23740 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23750 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23760 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23770 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23780 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23790 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
237a0 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
237b0 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69  iterator);....#i
237c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
237d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
237e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
237f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23800 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23810 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23820 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23830 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23840 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23850 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23860 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23870 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23880 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
23890 69 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c 20  invert(int nIn, 
238a0 49 6e 74 50 74 72 20 70 49 6e 2c 20 72 65 66 20  IntPtr pIn, ref 
238b0 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e  int nOut, ref In
238c0 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23  tPtr pOut);....#
238d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
238e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
238f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23900 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23910 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23930 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23950 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23960 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23970 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23990 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
239a0 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c 20  _concat(int nA, 
239b0 49 6e 74 50 74 72 20 70 41 2c 20 69 6e 74 20 6e  IntPtr pA, int n
239c0 42 2c 20 49 6e 74 50 74 72 20 70 42 2c 20 72 65  B, IntPtr pB, re
239d0 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20  f int nOut, ref 
239e0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
239f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23a00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23a10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23a20 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23a30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23a40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23a50 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23a60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23a70 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23a80 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23a90 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23aa0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
23ab0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
23ac0 72 6f 75 70 5f 6e 65 77 28 72 65 66 20 49 6e 74  roup_new(ref Int
23ad0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29  Ptr changeGroup)
23ae0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23af0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23b00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23b10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23b20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23b30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23b40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23b50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23b60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23b70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23b80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23b90 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23ba0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
23bb0 6e 67 65 67 72 6f 75 70 5f 61 64 64 28 49 6e 74  ngegroup_add(Int
23bc0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c  Ptr changeGroup,
23bd0 20 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74 50   int nData, IntP
23be0 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69  tr pData);....#i
23bf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23c00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23c10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23c20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23c30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23c40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23c50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23c60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23c70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23c80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23c90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23ca0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23cb0 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
23cc0 70 5f 6f 75 74 70 75 74 28 49 6e 74 50 74 72 20  p_output(IntPtr 
23cd0 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 72 65 66  changeGroup, ref
23ce0 20 69 6e 74 20 6e 44 61 74 61 2c 20 72 65 66 20   int nData, ref 
23cf0 49 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a  IntPtr pData);..
23d00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23d10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23d20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23d30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23d40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23d50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23d60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23d70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23d80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23d90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23da0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23db0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 63  rn void sqlite3c
23dc0 68 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65 74  hangegroup_delet
23dd0 65 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  e(IntPtr changeG
23de0 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  roup);....#if !P
23df0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23e00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23e10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23e20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23e30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23e40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23e50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23e60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23e70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23e80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23e90 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
23ea0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
23eb0 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c  e3changeset_appl
23ec0 79 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  y(IntPtr db, int
23ed0 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74   nChangeSet, Int
23ee0 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 2c 20  Ptr pChangeSet, 
23ef0 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78  xSessionFilter x
23f00 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e  Filter, xSession
23f10 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
23f20 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  ct, IntPtr conte
23f30 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
23f40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23f50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23f60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23f70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23f80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23f90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23fa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23fb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23fc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23fd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23fe0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23ff0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
24000 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f  changeset_apply_
24010 73 74 72 6d 28 49 6e 74 50 74 72 20 64 62 2c 20  strm(IntPtr db, 
24020 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
24030 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e  nput, IntPtr pIn
24040 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  , xSessionFilter
24050 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69   xFilter, xSessi
24060 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66  onConflict xConf
24070 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e  lict, IntPtr con
24080 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
24090 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
240a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
240b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
240c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
240d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
240e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
240f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
24100 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24110 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
24120 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24130 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24140 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24150 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63  e3changeset_conc
24160 61 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e  at_strm(xSession
24170 49 6e 70 75 74 20 78 49 6e 70 75 74 41 2c 20 49  Input xInputA, I
24180 6e 74 50 74 72 20 70 49 6e 41 2c 20 78 53 65 73  ntPtr pInA, xSes
24190 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
241a0 42 2c 20 49 6e 74 50 74 72 20 70 49 6e 42 2c 20  B, IntPtr pInB, 
241b0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
241c0 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
241d0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
241e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
241f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24200 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24210 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24220 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24230 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24240 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24250 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24260 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24270 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24280 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24290 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
242a0 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72  3changeset_inver
242b0 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49  t_strm(xSessionI
242c0 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
242d0 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f  Ptr pIn, xSessio
242e0 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c  nOutput xOutput,
242f0 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
24300 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24310 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24320 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24330 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24350 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24360 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
24370 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24390 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
243a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
243b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
243c0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
243d0 73 65 74 5f 73 74 61 72 74 5f 73 74 72 6d 28 72  set_start_strm(r
243e0 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74  ef IntPtr iterat
243f0 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  or, xSessionInpu
24400 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72  t xInput, IntPtr
24410 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50   pIn);....#if !P
24420 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24430 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24440 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24450 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24460 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24470 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24480 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
24490 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
244a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
244b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
244c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
244d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
244e0 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65  e3session_change
244f0 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20  set_strm(IntPtr 
24500 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f  session, xSessio
24510 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c  nOutput xOutput,
24520 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
24530 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24540 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24550 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24560 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24570 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24580 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24590 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
245a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
245b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
245c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
245d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
245e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
245f0 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
24600 6e 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28  n_patchset_strm(
24610 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
24620 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
24630 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
24640 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
24650 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24660 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24670 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24680 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24690 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
246a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
246b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
246c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
246d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
246e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
246f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24700 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
24710 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64  3changegroup_add
24720 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61  _strm(IntPtr cha
24730 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69  ngeGroup, xSessi
24740 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
24750 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a  IntPtr pIn);....
24760 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24770 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24780 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24790 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
247a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
247b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
247c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
247d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
247e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
247f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24800 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24810 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24820 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
24830 6f 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28  oup_output_strm(
24840 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
24850 75 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70  up, xSessionOutp
24860 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50  ut xOutput, IntP
24870 74 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69  tr pOut);..#endi
24880 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
24890 6e 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  n..    #endregio
248a0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
248b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
24900 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72  ion sqlite inter
24910 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e  op api calls (.N
24920 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
24930 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20  work only)..#if 
24940 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24950 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
24960 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
24970 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24980 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
24990 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
249a0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
249b0 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
249c0 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
249d0 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e  tPtr db, ref lon
249e0 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20  g rowId);....   
249f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24a00 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
24a10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24a20 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
24a30 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e  3_memory_used_in
24a40 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62  terop(ref long b
24a50 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
24a60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24a70 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
24a80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24a90 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
24aa0 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f  emory_highwater_
24ab0 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65  interop(int rese
24ac0 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20  tFlag, ref long 
24ad0 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
24ae0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24af0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
24b00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24b10 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
24b20 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
24b30 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
24b40 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
24b50 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
24b60 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
24b70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24b80 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
24b90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24ba0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24bb0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
24bc0 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  d_int64_interop(
24bd0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
24be0 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
24bf0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
24c00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24c10 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
24c20 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
24c30 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22  d_int64_interop"
24c40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
24c50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24c60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24c70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
24c80 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
24c90 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
24ca0 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c  x, ref ulong val
24cb0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
24cc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24cd0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
24ce0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24cf0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
24d00 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  umn_double_inter
24d10 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
24d20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64  int index, ref d
24d30 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
24d40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24d50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
24d60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24d70 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
24d80 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
24d90 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
24da0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
24db0 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75  x, ref long valu
24dc0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
24dd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24de0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
24df0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
24e00 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
24e10 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  e_double_interop
24e20 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64  (IntPtr p, ref d
24e30 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
24e40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24e50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
24e60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24e70 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
24e80 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
24e90 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
24ea0 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61   p, ref Int64 va
24eb0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
24ec0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24ed0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
24ee0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24ef0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
24f00 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  sult_double_inte
24f10 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
24f20 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  xt, ref double v
24f30 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
24f40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24f50 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
24f60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24f70 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
24f80 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65  esult_int64_inte
24f90 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
24fa0 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61  xt, ref Int64 va
24fb0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
24fc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24fd0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
24fe0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24ff0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
25000 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
25010 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
25020 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
25030 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
25040 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  e, IntPtr pModul
25050 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c  e, int iVersion,
25060 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
25070 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e  ,..        xConn
25080 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42  ect xConnect, xB
25090 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
250a0 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74  dex, xDisconnect
250b0 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20   xDisconnect,.. 
250c0 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20         xDestroy 
250d0 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20  xDestroy, xOpen 
250e0 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43  xOpen, xClose xC
250f0 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46  lose, xFilter xF
25100 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  ilter,..        
25110 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f  xNext xNext, xEo
25120 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20  f xEof, xColumn 
25130 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20  xColumn, xRowId 
25140 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20  xRowId, xUpdate 
25150 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20  xUpdate,..      
25160 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c    xBegin xBegin,
25170 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43   xSync xSync, xC
25180 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78  ommit xCommit, x
25190 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
251a0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69  ck,..        xFi
251b0 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64  ndFunction xFind
251c0 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d  Function, xRenam
251d0 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65  e xRename, xSave
251e0 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
251f0 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65  ,..        xRele
25200 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52  ase xRelease, xR
25210 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
25220 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43  ackTo, IntPtr pC
25230 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20  lientData,..    
25240 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75      xDestroyModu
25250 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  le xDestroyModul
25260 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
25270 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   // PLATFORM_COM
25280 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26  PACTFRAMEWORK &&
25290 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
252a0 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  D..    #endregio
252b0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
252c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25300 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
25310 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
25320 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ates..#if INTERO
25330 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
25340 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25350 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25360 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
25370 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
25380 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25390 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
253a0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
253b0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
253c0 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
253d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
253e0 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
253f0 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
25400 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
25410 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
25420 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
25430 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
25440 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
25450 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
25460 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254b0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
254c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
254d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
254e0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
254f0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
25500 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25510 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
25520 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
25530 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e  teErrorCode xCon
25540 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
25550 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
25560 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
25570 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
25580 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
25590 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
255a0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
255b0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
255c0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
255d0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
255e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
25630 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25640 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25650 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
25660 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
25670 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25680 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
25690 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
256a0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
256b0 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
256c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
256d0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
256e0 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
256f0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
25750 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25760 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25770 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
25780 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
25790 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
257a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
257b0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
257c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
257d0 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
257e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
257f0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
25800 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25850 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25860 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25870 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
25880 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
25890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
258a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
258b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
258c0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
258d0 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
258e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
258f0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
25900 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
25910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25950 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25960 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25970 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
25980 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
25990 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
259a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
259b0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
259c0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
259d0 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
259e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
259f0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
25a00 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
25a10 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
25a20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25a70 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25a80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25a90 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
25aa0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
25ab0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25ac0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
25ad0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
25ae0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
25af0 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
25b00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
25b10 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
25b20 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
25b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25b80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25b90 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
25ba0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
25bb0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
25bc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
25bd0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
25be0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
25bf0 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72  rrorCode xFilter
25c00 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
25c10 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
25c20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d      int idxNum,.
25c30 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
25c40 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
25c50 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
25c60 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
25c70 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
25c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
25cd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25ce0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25cf0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
25d00 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
25d10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25d20 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
25d30 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
25d40 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
25d50 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
25d60 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
25d70 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
25d80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25dd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25de0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25df0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
25e00 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
25e10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25e20 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
25e30 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
25e40 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a  gate int xEof(..
25e50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25e60 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
25e70 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
25e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ec0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
25ed0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25ee0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
25ef0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
25f00 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
25f10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25f20 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
25f30 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
25f40 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
25f50 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
25f60 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
25f70 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
25f80 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69  text,..        i
25f90 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b  nt index..    );
25fa0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
25fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ff0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
26000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
26020 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
26030 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
26040 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26050 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
26060 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
26070 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
26080 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Id(..        Int
26090 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
260a0 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
260b0 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
260c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
260d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26110 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26120 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26130 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26140 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26150 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26170 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26180 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26190 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
261a0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
261b0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
261c0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
261d0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
261e0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
261f0 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
26200 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
26210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26250 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
26260 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26270 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
26280 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
26290 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
262a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
262b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
262c0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
262d0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
262e0 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  in(..        Int
262f0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
26300 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
26310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26350 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
26360 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26370 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
26380 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
26390 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
263a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
263b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
263c0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
263d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79  iteErrorCode xSy
263e0 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nc(..        Int
263f0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
26400 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
26410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26450 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
26460 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26470 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
26480 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
26490 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
264a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
264b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
264c0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
264d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
264e0 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49  mmit(..        I
264f0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
26500 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
26510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26550 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
26560 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26570 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
26580 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
26590 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
265a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
265b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
265c0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
265d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
265e0 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
265f0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
26600 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
26610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26620 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69  //////////....#i
26660 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26670 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26680 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
26690 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
266a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
266b0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
266c0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
266d0 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  te int xFindFunc
266e0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  tion(..        I
266f0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
26700 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
26710 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26720 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
26730 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
26740 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
26750 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
26760 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20   pUserData..    
26770 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
26780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
267d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
267e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
267f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26800 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26810 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26820 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26830 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
26840 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
26850 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
26860 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26870 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
26880 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ew..    );....  
26890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
268a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
268e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
268f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26900 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26910 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26920 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26930 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26940 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
26950 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
26960 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
26970 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26980 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
26990 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
269a0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
269b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
26a00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26a10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26a20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
26a30 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
26a40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26a50 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
26a60 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
26a70 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
26a80 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
26a90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
26aa0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
26ab0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
26ac0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
26ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
26b20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26b30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26b40 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
26b50 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
26b60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26b70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26b80 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
26b90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26ba0 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
26bb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
26bc0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
26bd0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
26be0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
26bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
26c40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26c50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
26c60 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
26c70 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
26c80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26c90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
26ca0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
26cb0 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
26cc0 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  le(IntPtr pClien
26cd0 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d  tData);..#endif.
26ce0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
26cf0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d40 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
26d50 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75  n Native Structu
26d60 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  res..#if INTEROP
26d70 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
26d80 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
26d90 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
26da0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
26db0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
26dc0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
26dd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
26de0 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f  blic int iVersio
26df0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
26e00 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61  ic xCreate xCrea
26e10 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  te;..        pub
26e20 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f  lic xConnect xCo
26e30 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20  nnect;..        
26e40 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65  public xBestInde
26e50 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20  x xBestIndex;.. 
26e60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44         public xD
26e70 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f  isconnect xDisco
26e80 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20  nnect;..        
26e90 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20  public xDestroy 
26ea0 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20  xDestroy;..     
26eb0 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20     public xOpen 
26ec0 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  xOpen;..        
26ed0 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43  public xClose xC
26ee0 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  lose;..        p
26ef0 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46  ublic xFilter xF
26f00 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  ilter;..        
26f10 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65  public xNext xNe
26f20 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  xt;..        pub
26f30 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a  lic xEof xEof;..
26f40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
26f50 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d  Column xColumn;.
26f60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26f70 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a  xRowId xRowId;..
26f80 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
26f90 55 70 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d  Update xUpdate;.
26fa0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26fb0 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a  xBegin xBegin;..
26fc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
26fd0 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20  Sync xSync;..   
26fe0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6d       public xCom
26ff0 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20  mit xCommit;..  
27000 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
27010 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b  llback xRollback
27020 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
27030 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20  c xFindFunction 
27040 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a  xFindFunction;..
27050 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
27060 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d  Rename xRename;.
27070 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20  .        /* The 
27080 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72  methods above ar
27090 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f  e in version 1 o
270a0 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f  f the sqlite3_mo
270b0 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a  dule..         *
270c0 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20   object.  Those 
270d0 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65  below are for ve
270e0 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61  rsion 2 and grea
270f0 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ter. */..       
27100 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69   public xSavepoi
27110 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a  nt xSavepoint;..
27120 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
27130 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65  Release xRelease
27140 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
27150 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52  c xRollbackTo xR
27160 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20  ollbackTo;..    
27170 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
27180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
271d0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
271e0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
271f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
27200 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
27210 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  tab..    {..    
27220 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
27230 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  r pModule;..    
27240 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
27250 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45  Ref; /* NO LONGE
27260 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  R USED */..     
27270 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
27280 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d   zErrMsg;..    }
27290 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
272a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
272f0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
27300 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
27310 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27320 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74  truct sqlite3_vt
27330 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b  ab_cursor..    {
27340 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
27350 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a   IntPtr pVTab;..
27360 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
27370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
273c0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
273d0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
273e0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
273f0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
27400 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
27410 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  int..    {..    
27420 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
27430 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
27440 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
27450 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
27460 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
27470 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
27480 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
27490 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
274a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
274b0 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21  if (constraint !
274c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
274d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
274e0 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
274f0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f  = constraint.iCo
27500 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
27510 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73         op = cons
27520 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20  traint.op;..    
27530 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62              usab
27540 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  le = constraint.
27550 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20  usable;..       
27560 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66           iTermOf
27570 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e  fset = constrain
27580 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t.iTermOffset;..
27590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
275a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
275b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
275c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
27610 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t iColumn;..    
27620 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
27630 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
27640 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  Op op;..        
27650 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62  public byte usab
27660 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  le;..        pub
27670 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66  lic int iTermOff
27680 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  set;..    }.... 
27690 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
276a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
276e0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
276f0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
27700 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
27710 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
27720 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
27730 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20  rderby..    {.. 
27740 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
27750 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
27760 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rby(..          
27770 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64    SQLiteIndexOrd
27780 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20  erBy orderBy..  
27790 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
277a0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
277b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
277c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72            if (or
277d0 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  derBy != null)..
277e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27800 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79  Column = orderBy
27810 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20  .iColumn;..     
27820 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20             desc 
27830 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d  = orderBy.desc;.
27840 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
27850 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
27860 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
27870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
278b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
278c0 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43  nt iColumn; /* C
278d0 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d  olumn number */.
278e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
278f0 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20  byte desc;   /* 
27900 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
27910 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a  False for ASC. *
27920 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
27930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27980 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
27990 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
279a0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
279b0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
279c0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
279d0 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20  traint_usage..  
279e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
279f0 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
27a00 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
27a10 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
27a20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
27a30 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73  traintUsage cons
27a40 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20  traintUsage..   
27a50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27a60 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
27a70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
27a80 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
27a90 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20  straintUsage != 
27aa0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
27ab0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27ac0 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20        argvIndex 
27ad0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
27ae0 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20  e.argvIndex;..  
27af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d                om
27b00 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55  it = constraintU
27b10 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20  sage.omit;..    
27b20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27b30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27b90 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72     public int ar
27ba0 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e  gvIndex; /* if >
27bb0 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
27bc0 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
27bd0 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20   xFilter */..   
27be0 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
27bf0 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f   omit;     /* Do
27c00 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
27c10 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72   for this constr
27c20 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  aint */..    }..
27c30 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c80 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
27c90 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
27ca0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
27cb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
27cc0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
27cd0 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20  x_info..    {.. 
27ce0 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73         /* Inputs
27cf0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
27d00 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61  lic int nConstra
27d10 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  int; /* Number o
27d20 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f  f entries in aCo
27d30 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
27d40 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
27d50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d  tr aConstraint;.
27d60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
27d70 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20  int nOrderBy;   
27d80 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
27d90 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42  tries in aOrderB
27da0 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  y */..        pu
27db0 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64  blic IntPtr aOrd
27dc0 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f  erBy;..        /
27dd0 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20  * Outputs */..  
27de0 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
27df0 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr aConstraintU
27e00 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  sage;..        p
27e10 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d  ublic int idxNum
27e20 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e  ;           /* N
27e30 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64  umber used to id
27e40 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78  entify the index
27e50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
27e60 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74  lic string idxSt
27e70 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72  r;        /* Str
27e80 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62  ing, possibly ob
27e90 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69  tained from sqli
27ea0 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20  te3_malloc */.. 
27eb0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
27ec0 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53  t needToFreeIdxS
27ed0 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53  tr; /* Free idxS
27ee0 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33  tr using sqlite3
27ef0 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20  _free() if true 
27f00 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
27f10 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f  ic int orderByCo
27f20 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65  nsumed;  /* True
27f30 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c   if output is al
27f40 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f  ready ordered */
27f50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
27f60 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65   double estimate
27f70 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61  dCost; /* Estima
27f80 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e  ted cost of usin
27f90 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d  g this index */.
27fa0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
27fb0 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52 6f  long estimatedRo
27fc0 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61 74  ws;   /* Estimat
27fd0 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  ed number of row
27fe0 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20  s returned */.. 
27ff0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
28000 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 69  LiteIndexFlags i
28010 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b  dxFlags; /* Mask
28020 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45 58   of SQLITE_INDEX
28030 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f  _SCAN_* flags */
28040 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
28050 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20   long colUsed;  
28060 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a         /* Input:
28070 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73   Mask of columns
28080 20 75 73 65 64 20 62 79 20 73 74 61 74 65 6d 65   used by stateme
28090 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65  nt */..    }..#e
280a0 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
280b0 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  gion..  }..  #en
280c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
280d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
28120 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d  #region .NET Com
28130 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 28  pact Framework (
28140 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c 48 61  only) CriticalHa
28150 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66 20  ndle Class..#if 
28160 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28170 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74  FRAMEWORK..  int
28180 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63  ernal abstract c
28190 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e  lass CriticalHan
281a0 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  dle : IDisposabl
281b0 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76  e..  {..    priv
281c0 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73  ate bool _isClos
281d0 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ed;..    protect
281e0 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65  ed IntPtr handle
281f0 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
28200 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ed CriticalHandl
28210 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64  e(IntPtr invalid
28220 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20  HandleValue)..  
28230 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
28240 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  e = invalidHandl
28250 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f  eValue;..      _
28260 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65  isClosed = false
28270 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
28280 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28  ~CriticalHandle(
28290 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
282a0 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
282b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
282c0 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e  ivate void Clean
282d0 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  up()..    {..   
282e0 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64     if (!IsClosed
282f0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
28300 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73      this._isClos
28310 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
28320 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c      if (!IsInval
28330 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  id)..        {..
28340 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61 73            Releas
28350 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20  eHandle();..    
28360 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
28370 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
28380 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
28390 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
283a0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43     public void C
283b0 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  lose()..    {.. 
283c0 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
283d0 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
283e0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
283f0 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  spose()..    {..
28400 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
28410 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
28420 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
28430 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
28440 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
28450 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
28460 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20  Cleanup();..    
28470 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
28480 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  ed abstract bool
28490 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
284a0 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
284b0 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ed void SetHandl
284c0 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d  e(IntPtr value).
284d0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
284e0 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  ndle = value;.. 
284f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
28500 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ic void SetHandl
28510 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20  eAsInvalid()..  
28520 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c    {..      _isCl
28530 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
28540 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
28550 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
28560 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
28570 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65  lic bool IsClose
28580 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
28590 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73  get { return _is
285a0 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d  Closed; }..    }
285b0 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  ....    public a
285c0 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49  bstract bool IsI
285d0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20  nvalid..    {.. 
285e0 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d       get;..    }
285f0 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  ....  }..#endif.
28600 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
28610 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
28620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28660 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
28670 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
28680 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
28690 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
286a0 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
286b0 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
286c0 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
286d0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
286e0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
286f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
28700 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
28710 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
28720 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
28730 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
28740 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
28750 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28760 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28770 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
28780 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
28790 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
287a0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
287b0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
287c0 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
287d0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
287e0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
287f0 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
28800 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
28810 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
28820 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
28830 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
28840 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
28850 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
28860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288a0 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
288b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
288c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
288d0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
288e0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
288f0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
28900 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
28910 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28950 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28960 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
28970 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
28980 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
289d0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
289e0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
289f0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
28a00 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
28a10 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
28a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28a30 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
28a40 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
28a50 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
28a60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28a70 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
28a80 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
28a90 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
28aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ab0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28ac0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
28ad0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
28ae0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
28af0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
28b00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
28b10 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
28b20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28b30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28b80 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
28b90 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
28ba0 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
28bb0 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
28bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
28bd0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
28be0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
28bf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28c00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
28c10 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
28c20 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
28c30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
28c50 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
28c60 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
28c70 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
28c80 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
28c90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28ca0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
28cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
28d00 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
28d10 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
28d20 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
28d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
28d40 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
28d50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
28d60 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
28d70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
28d80 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
28d90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
28da0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
28db0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
28dc0 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
28dd0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
28de0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
28e40 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
28e50 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
28e60 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
28e70 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
28e80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
28e90 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
28ea0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
28eb0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
28ec0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28ed0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f            if (!o
28ee0 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e  wnHandle) return
28ef0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
28f00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28f10 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
28f20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
28f30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28f40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
28f50 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
28f60 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
28f70 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
28f80 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
28f90 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
28fa0 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
28fb0 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  );....#if SQLITE
28fc0 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
28fd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
28fe0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
28ff0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29010 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  closeConnection(
29020 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  this, localHandl
29030 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
29040 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29050 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
29060 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
29070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29080 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
29090 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
290a0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
290b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
290c0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
290d0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
290e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290f0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
29100 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29110 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
29120 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
29130 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
29140 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29160 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
29170 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
291a0 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f  ection: {0}", lo
291b0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
291c0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
291d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
291e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
291f0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
29200 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29210 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
29220 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
29230 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
29240 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
29250 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29270 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
29280 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
29290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
292b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
292c0 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
292d0 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e  ection(this, han
292e0 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
292f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
29300 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
29310 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
29320 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29340 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
29350 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
29360 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
29370 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
29380 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
29390 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
293a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
293b0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
293c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
293d0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
293e0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
293f0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
29400 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
29410 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
29420 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
29430 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
29440 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
29450 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
29460 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
29470 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
29480 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
29490 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
294a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
294b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
294c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
294d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
294e0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
294f0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
29500 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
29510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29520 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
29530 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
29540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29550 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65       "CloseConne
29560 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65  ction: {0}, exce
29570 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
29580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29590 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
295a0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
295b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
295d0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
295e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
295f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
29600 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
29610 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29620 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
29630 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
29640 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
29650 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
29660 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
29670 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
29680 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
29690 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
296a0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
296b0 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
296c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
296d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
296e0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
296f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29700 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
29710 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
29720 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
29730 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
29740 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
29750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29790 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
297a0 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
297b0 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
297c0 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
297d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
297e0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
297f0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
29800 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
29810 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  tionCount);..   
29820 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
29830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
29840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29880 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
29890 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64  lic bool OwnHand
298a0 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
298b0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
298c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
298d0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
298e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
298f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
29900 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
29910 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
29920 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
29930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29940 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  turn ownHandle;.
29950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29960 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
29970 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
29980 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
299d0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
299e0 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
299f0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
29a00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29a10 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
29a20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
29a30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29a40 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
29a50 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
29a60 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29a90 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
29aa0 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
29ab0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
29ac0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
29ad0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
29ae0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
29af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b30 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
29b40 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
29b50 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
29b60 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
29b70 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
29b80 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29b90 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
29ba0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
29bb0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
29bc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29bd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
29be0 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
29bf0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
29c00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
29c10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
29c20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
29c30 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
29c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c80 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
29c90 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
29ca0 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
29cb0 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
29cc0 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
29cd0 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
29ce0 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e   SQLite statemen
29cf0 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ts...    interna
29d00 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
29d10 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
29d20 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
29d30 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
29d40 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
29d50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29d60 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
29d70 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
29d80 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
29d90 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
29da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
29db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29df0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
29e00 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
29e10 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
29e20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
29e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
29e80 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
29e90 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
29ea0 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61 74  ntPtr(SQLiteStat
29eb0 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74  ementHandle stmt
29ec0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
29ed0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
29ee0 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  mt != null)..   
29ef0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
29f00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29f10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
29f20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
29f30 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d  (stmt.syncRoot).
29f40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
29f50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f70 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64  return stmt.hand
29f80 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
29f90 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
29fa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29fb0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
29fc0 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
29fd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
29fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a030 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53  internal SQLiteS
2a040 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53  tatementHandle(S
2a050 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2a060 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
2a070 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  r stmt)..       
2a080 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
2a090 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2a0a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a0b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2a0c0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2a0d0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2a0e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2a100 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
2a110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2a120 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a  tHandle(stmt);..
2a130 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a140 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a150 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a1a0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2a1b0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2a1c0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
2a1d0 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
2a1e0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2a1f0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
2a200 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2a210 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
2a220 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2a230 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
2a240 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2a250 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a260 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a2b0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
2a2c0 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
2a2d0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
2a2e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a2f0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2a300 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2a310 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a320 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a330 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a340 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
2a350 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
2a360 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
2a370 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2a380 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
2a390 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ero);....       
2a3a0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2a3b0 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2a3c0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2a3e0 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
2a3f0 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
2a400 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
2a410 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2a420 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2a430 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2a440 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2a450 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a470 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2a480 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2a490 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4b0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2a4c0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2a4d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2a4e0 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
2a4f0 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20  alizeStatement: 
2a500 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
2a510 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
2a520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a530 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a540 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2a550 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2a570 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
2a580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a590 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2a5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a5b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a5c0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
2a5d0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
2a5e0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2a5f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a610 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
2a620 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
2a630 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
2a640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a650 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2a660 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
2a670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a680 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a690 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2a6a0 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
2a6b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2a6c0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2a6d0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2a6e0 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
2a6f0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
2a700 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
2a710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2a720 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
2a730 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2a740 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
2a750 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2a760 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2a770 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
2a780 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
2a790 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2a7a0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
2a7b0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
2a7c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2a7d0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2a7e0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
2a7f0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2a800 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2a810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a830 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
2a840 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
2a850 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
2a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a870 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
2a880 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
2a890 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
2a8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
2a8b0 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
2a8c0 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2a8d0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2a8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8f0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2a900 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2a910 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a920 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2a930 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2a940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a950 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2a960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a970 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2a980 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2a990 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2a9a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a9b0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a9c0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2a9d0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2a9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa00 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2aa10 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2aa20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2aa30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2aa40 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2aa50 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2aa60 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2aa70 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2aa80 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2aa90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2aaa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aae0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2aaf0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2ab00 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2ab10 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2ab20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2ab30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ab40 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2ab50 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2ab60 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
2ab70 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
2ab80 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2ab90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2abe0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2abf0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
2ac00 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
2ac10 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
2ac20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ac30 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2ac40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac60 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2ac70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2ac80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ac90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aca0 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
2acb0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2acc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2acd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ace0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2acf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ad40 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
2ad50 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2ad60 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
2ad70 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
2ad80 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2ad90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2ada0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2adb0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2adc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2add0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ade0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
2adf0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
2ae00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ae10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
2ae20 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
2ae30 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2ae40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ae90 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2aea0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43  teBackupHandle C
2aeb0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
2aec0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
2aed0 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
2aee0 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
2aef0 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d  backup objects..
2af00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
2af10 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
2af20 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20  eBackupHandle : 
2af30 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
2af40 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2af50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2af60 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
2af70 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
2af80 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
2af90 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
2afa0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2afb0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b000 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2b010 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2b020 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
2b030 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b080 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2b090 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
2b0a0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
2b0b0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
2b0c0 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  e backup)..     
2b0d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b0e0 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20    if (backup != 
2b0f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2b100 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2b110 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2b120 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2b130 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75       lock (backu
2b140 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  p.syncRoot)..#en
2b150 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2b160 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b170 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2b180 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65  rn backup.handle
2b190 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b1a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2b1b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2b1c0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2b1d0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2b1e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2b240 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63  ternal SQLiteBac
2b250 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  kupHandle(SQLite
2b260 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2b270 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63   cnn, IntPtr bac
2b280 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20  kup)..          
2b290 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2b2a0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2b2b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b2c0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2b2d0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2b2e0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2b2f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b300 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
2b310 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
2b320 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2b330 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20  ndle(backup);.. 
2b340 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b350 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b360 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b3b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2b3c0 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
2b3d0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2b3e0 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
2b3f0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
2b400 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2b410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2b420 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
2b430 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2b440 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  a.backupCount);.
2b450 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2b460 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b4c0 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2b4d0 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2b4e0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2b4f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b500 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2b510 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
2b520 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2b530 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2b540 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
2b550 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
2b560 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
2b570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b580 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
2b590 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2b5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b5b0 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
2b5c0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2b5d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b5e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
2b5f0 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
2b600 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
2b610 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
2b620 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2b630 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2b640 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2b660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b670 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2b680 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2b690 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2b6a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2b6b0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2b6c0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2b6d0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2b6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6f0 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
2b700 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
2b710 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
2b720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b730 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b740 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
2b750 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2b770 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
2b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b790 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2b7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b7b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b7c0 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
2b7d0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2b7e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2b7f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b810 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
2b820 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
2b830 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
2b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b850 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
2b860 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2b880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b890 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
2b8a0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2b8c0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2b8d0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2b8e0 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
2b8f0 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
2b900 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
2b910 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2b920 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2b930 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
2b940 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2b950 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2b960 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2b970 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
2b980 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
2b990 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2b9a0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
2b9b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2b9c0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
2b9d0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2b9e0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2b9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2ba00 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2ba10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ba20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2ba30 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2ba40 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2ba50 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2ba70 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2ba80 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2ba90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2baa0 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75      "FinishBacku
2bab0 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  p: {0}, exceptio
2bac0 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
2bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bae0 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
2baf0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2bb00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2bb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2bb20 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2bb30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2bb40 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2bb50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2bb60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
2bb70 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
2bb80 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2bb90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2bba0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2bbb0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2bbc0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2bbe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bbf0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
2bc00 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
2bc10 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2bc20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2bc30 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2bc40 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2bc50 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
2bc60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2bc70 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
2bc80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2bc90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2bca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2bce0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2bcf0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2bd00 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
2bd10 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2bd20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bd30 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
2bd40 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2bd50 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e  gData.backupCoun
2bd60 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
2bd70 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
2bd80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2bdd0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2bde0 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
2bdf0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
2be00 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
2be10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2be20 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2be30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2be50 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2be60 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2be70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2be90 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
2bea0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bec0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2bed0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2bee0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2bef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2bf30 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2bf40 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2bf50 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
2bf60 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
2bf70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2bf80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2bf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2bfa0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2bfb0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2bfc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2bfd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
2bfe0 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
2bff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c000 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2c010 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
2c020 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2c030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c080 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
2c090 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73  eBlobHandle Clas
2c0a0 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
2c0b0 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
2c0c0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
2c0d0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 6c 6f  naged SQLite blo
2c0e0 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20  b objects...    
2c0f0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
2c100 63 6c 61 73 73 20 53 51 4c 69 74 65 42 6c 6f 62  class SQLiteBlob
2c110 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
2c120 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
2c130 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2c140 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c150 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2c160 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
2c170 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
2c180 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
2c190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2c1f0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
2c200 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2c210 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
2c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c260 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c270 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
2c280 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
2c290 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 6c   IntPtr(SQLiteBl
2c2a0 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a  obHandle blob)..
2c2b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c2c0 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 62 20         if (blob 
2c2d0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2c2e0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2c2f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c300 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2c310 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c          lock (bl
2c320 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  ob.syncRoot)..#e
2c330 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c340 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c350 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c360 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b  urn blob.handle;
2c370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c380 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2c390 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c3a0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
2c3b0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
2c3c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2c3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c410 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
2c420 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62  ernal SQLiteBlob
2c430 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
2c440 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2c450 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d  n, IntPtr blob).
2c460 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
2c470 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
2c480 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2c490 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2c4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2c4b0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2c4c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c4d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c4e0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
2c4f0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
2c500 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
2c510 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  blob);..        
2c520 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2c530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c580 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2c590 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 6c 6f  rivate SQLiteBlo
2c5a0 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  bHandle()..     
2c5b0 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
2c5c0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2c5d0 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
2c5e0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2c5f0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2c600 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
2c610 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
2c620 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
2c630 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c640 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c690 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
2c6a0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
2c6b0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
2c6c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c6d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2c6e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
2c6f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c700 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2c710 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2c720 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
2c730 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
2c740 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
2c750 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
2c760 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
2c770 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
2c780 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
2c790 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
2c7a0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2c7b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2c7c0 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
2c7d0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
2c7e0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
2c7f0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2c800 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2c810 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2c820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c830 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c840 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2c850 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2c860 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2c870 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2c880 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2c890 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2c8a0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8c0 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30    "CloseBlob: {0
2c8d0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
2c8e0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2c8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c900 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2c910 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2c920 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c930 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c940 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
2c950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2c960 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c980 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c990 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
2c9a0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2c9b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2c9c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c9e0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
2c9f0 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64  seBlob(cnn, hand
2ca00 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
2ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2ca20 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
2ca30 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
2ca40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2ca50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ca60 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
2ca70 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2ca80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2ca90 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
2caa0 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
2cab0 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  lobCount);..#end
2cac0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
2cad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2cae0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2caf0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2cb00 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
2cb10 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2cb20 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2cb30 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
2cb40 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
2cb50 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2cb60 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2cb70 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
2cb80 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2cb90 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
2cba0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2cbb0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2cbc0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2cbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbf0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
2cc00 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
2cc10 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
2cc20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cc30 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
2cc40 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2cc50 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
2cc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
2cc70 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65  loseBlob: {0}, e
2cc80 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
2cc90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cca0 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
2ccb0 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
2ccc0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ccd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2cce0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2ccf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
2cd20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2cd30 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
2cd40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2cd50 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2cd60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2cd80 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2cd90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2cda0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2cdc0 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2cdd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2cde0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2cdf0 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
2ce00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2ce10 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
2ce20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
2ce30 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2ce40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2ce50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cea0 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
2ceb0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
2cec0 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
2ced0 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
2cee0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cef0 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
2cf00 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2cf10 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f  ef DebugData.blo
2cf20 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  bCount);..      
2cf30 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
2cf40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cf90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2cfa0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
2cfb0 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
2cfc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cfd0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
2cfe0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2cff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2d000 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2d010 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2d020 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2d030 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d050 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
2d060 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2d070 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2d080 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d090 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2d0a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0f0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
2d100 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2d110 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
2d120 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
2d130 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2d140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2d150 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2d160 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2d170 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2d180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d190 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d1a0 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
2d1b0 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
2d1c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d1d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
2d1e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d     #endregion..}
2d1f0 0d 0a                                            ..